犀牛书7-数组

数组是经历过优化的对象,用数字索引来访问数组一般来说要比访问常规的对象属性要快很;

数组的直接量允许有可选的结尾的逗号,所以[ , , ]的长度为2;

数组是对象的特殊的方式,使用【】来访问数组元素的时候,就像用方括号访问对象的属性;过程是:JavaScript现将数值1转换成字符串‘1’,在进行属性名来使用;

数组的序号范围0-2 32 -2超过这个范围数组的长度会为稳定在固定的数值不会发生变化,

a[-1.23]为a数组添加一个‘-1.23’的属性
a['1000']为a数组的第1001个元素
a[1.000]和a[1]一样;

字面量声明数组与构造函数声明数组的区别:
var a = [, , , ];
var a1 = new Array(3);
0 in a 返回true;
0 in a1 返回false;
其中字面量创建的数组有元素都是underfined;
但是构造函数创建的数组,只是有length为3其中没有元素;

delete运算符会删除元素但是不会影响元素的长度;

数组的方法:
1.数组尾部的删除和添加:
push尾部添加元素;返回添加后数组的长度
pop尾部删除元素;返回被删除的元素;
2.ES2015的数组遍历的方法forEach
arr.forEach(function(value,index){ 数组操作 });
3.join()将数组转换成字符串规定特定的连字符,默认用逗号链接;返回字符串
4.reverse()将数组翻转;返回翻转后的数组;改变原数组;
5.sort()数组的元素排序;
一般会传递进去一个function函数;参数是a和b函数返回时:return a - b数组按照小到大排序,return b - a时数组按照大到小排序;一般这个方法可以给对象排序;
6.concat()的方法创建 并返回一个新数组;元素包含调用concat()的原始数组的元素和concat的每个参数,如果参数是数组,则会链接数组的元素,这个只支持以为数组的链接;如 :[1,2,3].concat([444],[5,[6]],[7]); return [1,2,3,444,5,[6],7];
7.slice和splice的方法:slice是返回数组的指定的片段或者子数组;参数分别为开始和结束位置;splice是在数组中插入和删除元素的通用方法,第一个参数是指定插入和删除的起始位置,第二个参数是指定从数组删除的元素的个数,省略参数就是从规定的位置删除到数组结尾,
8.pop和push的方法:push是在数组的尾部添加一个或多个元素,返回数组的长度;pop的方法是 删除数组的最后一个元素,返回删除的值;添加的方法可以传递多个参数
9.shift和unshift的方法,unshift在数组的头部添加元素返回数组的长度,shift是删除数组的第一个元素,返回删除的元素;添加的方法可以传递多个参数;

ES5的数组的方法:
1.forEach(function(index, val, [ thisArr ]){ 操作函数});从头到尾遍历数组,为每个元素指定函数;forEach的方法是遍历数组,在数组的所有的元素遍历之前,是不会停止遍历的,如果要提前停止需要将forEach方法放在一个try-catch中,用来接收错误并抛出 ;这里的fotEach方法只是单纯的遍历数组;
2.map()的方法:将调用数组的每个元素传递给指定的函数,返回一个新的数组,他是该函数的返回值;arr.map(function( val是数组的元素 ){ return 返回数组的元素});该方法会保持原数组的特性,原数组稠密就返回稠密数组,原数组稀疏就会返回稀疏的数组;
3.filter()方法:用来筛选数组的元素,满足条件的返回原数组的一个子集数组;回调函数记得加上return;只会返回稠密的数组;
4.every和some方法是对逻辑的判断:every()方法是所有的数组元素都要满足条件;some是判断数组元素部分满足条件;次函数的返回值是true和false;
5.reduce和reduceRight的方法:是用指定的函数将数组元素进行组合返回一个数据;
6.indexOf和lastIndexOf的方法可以判断元素的位置;
7.Array.isArray(变量):ES5新增的方法判断是否数组;之前一直利用instanceof操作符来判断; 变量 instanceof Array判断是否是数组;但是instanceof操作符只能用于简单的情形;

类数组调用数组的方法:利用Function.call的方法;一般有的浏览器自己就封装了函数的方法可以利用Array.prototype.join.call( 伪数组,‘jion的参数’);

字符串的方法可以通用数组的方法;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,817评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,329评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,354评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,498评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,600评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,829评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,979评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,722评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,189评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,519评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,654评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,940评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,762评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,993评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,382评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,543评论 2 349

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,216评论 0 4
  • 暖先生,是那些衷心陪伴在女闺蜜身边的好先生。你有,我有,哪个女孩子没有呢?今天,我要对我的暖先生说再见了。 那么多...
    LU小彩阅读 481评论 8 4
  • 轻舟冷叶寒江,疏藤古木檀香, 长风细雨微浪。翠湖庭畔, 白草黄絮秋殇。
    劉海峰阅读 335评论 0 1
  • 类加载器 对类加载器的学习重点要掌握以下几点: 双亲委派模型的概念 双亲委派模型的实现原理 类加载器的工作原理 如...
    Danielvip阅读 480评论 0 1