buchuitoudegou / Tutorial

0 stars 0 forks source link

Extension of Array #12

Open buchuitoudegou opened 5 years ago

buchuitoudegou commented 5 years ago
/* 数组的扩展 */
// 用扩展运算符代替apply
const a = [1, 2, 3, 4]
Math.max(...a); // <=> Math.max.apply(null, a);
// 扩展运算符复制数组
const a2 = [...a];
const [...a3] = a; // <=> const a3 = a.concat();
// 扩展运算符合并数组
const a4 = [...a, ...a2, ...a3]; // <=> a4 = a.concat(a2, a3);

// Array.of转化为数组
console.log(Array.of(3, 11, 8)); // [3, 11, 8]
console.log(Array.of(3)); // [3]
console.log(Array(3)); // [,,,]

// find,找出第一个符合的成员,并返回这个成员,否则返回undefined
console.log([1, 2, 3, 4].find((x) => x == 4)); // 4

// findIndex返回第一个符合条件的数组成员的下标,没有则返回-1
console.log([3, 4, 5, -10].findIndex((x) => x < 0)); // 3
// findIndex和indexOf的区别:可以找到NaN
[NaN].indexOf(NaN); // -1
[NaN].findIndex(x => Object.is(NaN, x)); // 0

// fill填充数组
console.log(new Array(3).fill(7)); // [7, 7, 7]
// fill填充对象的时候,是浅复制
const a5 = new Array(3).fill({ "a": 1 });
a5[0]['a'] = 'aaa';
console.log(a5); // [ { a: 'aaa' }, { a: 'aaa' }, { a: 'aaa' } ]

// includes
console.log([1, 2, 3].includes(3)); // true
// includes 的第二个参数为起始位置
console.log([1, 2, 3].includes(1, 1)); // false