引用MDN注释: JavaScript的 Array 对象是用于构造数组的全局对象,数组是类似于列表的高阶对象。
一、创建数组(随便看看就行)
两种方式:
1、字面量;
let arr = [];
2、Array构造器;
两种声明方法:
new Array(element0, element1, …elementN);
new Array(arrayLenth);
什么都不传:
let arrNew = new Array(); => [];
二、方法(这才是重点嘛)
1、length
length属性作为数组一个重要的属性,众所周知;但是平时开发中,使用它的频率还是很低的。主动设置length长短,会对数组有什么样的影响呢?我们一起看看。但是,个人觉得,了解即可。
就说两个特点吧~
1、数组中“empty”元素,使用Object.(keys|values)方法遍历,会自动清除;
两种情况下:a)声明索引大于数组本身;
length也会跟着改变b)初始length比较大,元素没有全部声明;
2、上面声明了一个过大length,那么声明一个过小的length呢?
很明显了,删除了超过的元素,初始化length属性;
说完length属性,其他的基础方法我们分为两部分整理:一种是改变原数组的方法;一种是不改变原数组的方法。那么,改变的一个重要根据,就是length属性。
在这之前介绍三个es6新方法:
Array.from() 把类数组变成数组;
Array.isArray() 判断是不是数组;
Array.of() 添加任意参数,并返回一个新数组;
2、改变原数组的方法;
1、copyWithin(target, start, end):数组内,从target开始覆盖,覆盖内容为:start <= 覆盖内容 <end;
target:目标索引;
start:复制元素开始索引,不填为0,即从数组开始复制;
end:复制元素结束索引,不填为复制到数组最后;
2、fill(value, start, end):数组内,更改为value,更改部分:start <= 更改部分 <end;
value:新值;
start和end取决更改范围;
3、pop():删除最后一个元素,返回此元素;
4、push():数组最后增加一(多)个元素,返回新数组length属性;
5、reverse():颠倒顺序;
6、shift():删除第一个元素,并返回此元素;
7、unshift():数组开头增加一(多)个元素,并返回新数组length;
8、sort(compareFunction):排序,返回新数组,不复制;
compareFunction(firstEl, secondEl):firstEl和secondEl,比较return
9、splice(start, delCount, item1…itemN):删除N个或增加一个元素;
start:开始位置;
delCount:不大于0,则再start位置后增加item…等N个元素;否则,再start后,删除delCount个元素;然后增加item…个元素;
3、不改变原数组的方法;
1、concat(item1…itemN):一个数组和任意个参数并返回新数组,参数有数组则再其后拼接,否则作为元素;
2、includes(_include, _fromIndex):判断是否包含_include;返回true|false;(通用方法,类数组也可以用)
_include: 要搜索的元素;
_fromIndex: 开始搜索索引;
3、join(_separator):链接所有元素,返回新字符串;(如果一个元素为undefined或null,它会被转换为空字符串。)
_separator:连接符;
4、slice(start, end):数组内,抽取并返回一个新数组;
5、indexOf(_item):寻找元素_item, 返回索引,与之相应的lastIndexOf(),是从最后一位往前寻找;
MDN中还有toString()和toLocaleString(),方法,是通用的方法,各种类型自身都存在,这里就不详细描述了。
4、迭代方法;
相信我,为了你代码能好好“活着”,千万别再遍历的时候,改变元素数组!!!!!!
1、forEach(start, end):除了抛出异常以外,没有办法中止或跳出循环;如果非要中止或跳出,则可以配合filter()提前过滤,然后遍历。
2、entries():返回一个数组迭代器对象。
用next()方法,获取键值;
3、every(_callback, _thisArg):每个元素是否满足_callback返回值,返回true|false;
4、some(_callback, _thisArg):至少有一个元素是否满足_callback返回值,返回true|false;与every逻辑相同;
5、filter(_callback, _thisArg):选择满足_callback的元素,组成新数组并返回;
6、find(_callback,_thisArg):找到第一个满足_callback的元素并返回,否则返回undefined;fineIndex(): 索引,否则范围-1;
7、keys()|values():遍历数组索引(key)或元素(value),返回新数组;
8、map(_callback,_thisArg):遍历,并返回修改后新数组,原数组不变;
原数组不改变9、reduce(_callback,_thisArg):从左往右依次执行_callback,并把执行后的值依次向下传递;
reduceRight(_callback,_thisArg):同上,只是顺序从右至左;
网友评论