数组创建
- Array.of()
在以new方法定义数组时会遇到这样的情况let arr = new Array(2); // 如果本意是在arr数组里添加一个2元素这个就不能实现,而是定义的一个长度为2的数组容器 let arr1 = Array.of(2); //我们这样来解决该方法可以实现单参数创建
- Array.from()
返回一个以arguments对象(类数组)组成的数组,对象就可以使用数组方法不需要还在类数组原型上写Array方法,他的第二个参数可以用方法映射改变数组
当映射函数需要使用对象方法时,第三个参数就要写上对象let arr = Array.of(1, 2, 3, 4); function add() { console.log(Array.from(arguments, function(vaule){ return ++vaule; })); // 返回数组加一,也可以使用箭头函数简化 } add(...arr);
let arr = Array.of(1, 2, 3, 4); let person = { age: 18, increase(vaule) { return this.age + vaule; }, } function grow(){ return Array.from(arguments, person.increase, person) } console.log(grow(...arr)); //返回一个映射的与age相加了的数组
所有数组的新方法
- find(),findIndex()
按参数回调函数条件来返回值,直接看案例let arr1 = Array.of(11, 22, 33, 44, 55); for(let i of arr1) { console.log(arr1.find(n => n>10)); // 相当于每一次都是从数组头开始索引 } console.log(arr1.findIndex(n => n>10) + 1); console.log(arr1.find(n => n>10)); console.log(arr1.find(function (n){ return n>22; }));
- fill()
以一个参数替换数组中一个或多个元素,该方法是对数组本身改变let arr = Array.of(5, 6, 7, 8); arr.fill(1); // arr => 1,1,1,1 当参数只有替换数时将替换数组所有元素 arr.fill(2, 2); // arr => 1,1,2,2 arr.fill(3, 2, 3); // arr => 1,1,3,2 // 后两个参数代表替换位置索引(取头不取尾),只有一个即为索引起始位到数组末尾
- set()
复制数组,第一个参数为要添加进去的数组,第二个参数为插入索引位(不写默认为0)let arr = Array.of(1, 2); arr.set([3, 4]); console.log(arr); // [3, 4] arr.set([1, 2], 2) console.log(arr); // [3, 4, 1, 2]
- subarray()
切割数组,含头不含尾,只有起始到末尾
类型化数组
- 相当于是一个长度不可变的数组,类似于一个限制性的数组,定义了元素类型,不符合要求的数据操作,代码都无法被识别。
这样构造:let ints = new Int16Array([25, 50]); console.log(ints.length); // 2 console.log(ints[0]); // 25 console.log(ints[1]); // 50 ints[2] = 5; console.log(ints.length); // 2 console.log(ints[2]); // 数组相当于定长,以及规定数组内元素类型