Array.from()对现有数组执行浅复制
const a1 = [1, 2, 3, 4];
const a2 = Array.from(a1);
第三个参数重写当前from的this对象
const a1 = [1, 2, 3, 4];
const a2 = Array.from(a1, x => x**2);
const a3 = Array.from(a1, function(x) {return x**this.exponent}, {exponent: 2});
console.log(a2); // [1, 4, 9, 16]
console.log(a3); // [1, 4, 9, 16]
Array.of()可以把一组参数转换为数组。这个方法用于替代在 ES6之前常用的 Array.prototype.
slice.call(arguments),一种异常笨拙的将 arguments 对象转换为数组的写法:
console.log(Array.of(1, 2, 3, 4)); // [1, 2, 3, 4]
console.log(Array.of(undefined)); // [undefined]
修改数组长度 改少删除 改多会增加undefined
let colors = ["red", "blue", "green"]; // 创建一个包含 3 个字符串的数组
colors.length = 2;
alert(colors[2]); // undefined
判断是否为数组
v instanceof Array
Array.isArray(v)
替换数组值
arr.fill(替换的值:any,start:num,end:num)
copyWithin没看太懂
push()方法接收任意数量的参数,并将它们添加到数组末尾,返回数组的最新长度。pop()方法则 用于删除数组的最后一项,同时减少数组的 length 值,返回被删除的项。
改变原数组
arr.splice()
let colors = ["red", "green", "blue"];
let removed = colors.splice(0,1); // 删除第一项
alert(colors); // green,blue
alert(removed); // red,只有一个元素的数组
removed = colors.splice(1, 0, "yellow", "orange"); // 在位置 1 插入两个元素
alert(colors); // green,yellow,orange,blue
alert(removed); // 空数组
removed = colors.splice(1, 1, "red", "purple"); // 插入两个值,删除一个元素
alert(colors); // green,red,purple,orange,blue
alert(removed); // yellow,只有一个元素的数组
indexOf()
includes()
lastIndexOf()
返回匹配的元素或下标
找到匹配项后,这两个方法都不再继续搜索
find()
findIndex()
const people = [ { name: "Matt", age: 27 }, { name: "Nicholas", age: 29 } ];
people.find((item,index,arr)=>item.age>28)
every()
some()
let numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
let everyResult = numbers.every((item, index, array) => item > 2);
alert(everyResult); // false
let someResult = numbers.some((item, index, array) => item > 2);
alert(someResult); // true
filter()
map()
forEach() 没有返回值
如果没有写第二初始值 索引会从1开始 其实是第一次的时候就隐式调用了pre+cur,
你可以理解为是在背后做了pre是0+cur:1。
reduce(fn,初始值)
reduceRight() 从数组右边开始执行reduce
Map
Map 可以使用任何 JavaScript 数据类型作为键。
const m1 = new Map([
["key1", "val1"],
["key2", "val2"],
["key3", "val3"]
]);
alert(m1.size); // 3
has() set() get() delete() clear() size属性
const m = new Map();
alert(m.has("firstName")); // false
alert(m.get("firstName")); // undefined
alert(m.size); // 0
m.set("firstName", "Matt")
.set("lastName", "Frisbie");
alert(m.has("firstName")); // true
alert(m.get("firstName")); // Matt
alert(m.size); // 2
m.delete("firstName"); // 只删除这一个键/值对
alert(m.has("firstName")); // false
alert(m.has("lastName")); // true
alert(m.size); // 1
m.clear(); // 清除这个映射实例中的所有键/值对
alert(m.has("firstName")); // false
alert(m.has("lastName")); // false
alert(m.size); // 0
可以通过m.entries()进行迭代
WeakMap 弱映射
Set 集合
// 使用数组初始化集合
const s1 = new Set(["val1", "val2", "val3"]);
alert(s1.size); // 3
初始化之后,可以使用 add()增加值,使用 has()查询,通过 size 取得元素数量,以及使用 delete()
和 clear()删除元素
add()返回集合的实例,所以可以将多个添加操作连缀起来,包括初始化:
const s = new Set().add("val1");
s.add("val2").add("val3");
alert(s.size); // 3
#weakset 弱集合