-
Notifications
You must be signed in to change notification settings - Fork 0
/
enhanced-array.html
65 lines (58 loc) · 3.95 KB
/
enhanced-array.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>enhanced array</title>
</head>
<body>
<script>
// Array.from方法用于将两类对象转为真正的数组:
// 类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Set和Map)
// Array.from方法还支持类似数组的对象, 对象必须有length属性
console.log(Array.from({ length: 3 }));
// Array.from还可以接受第二个参数,作用类似于数组的map方法,
// 用来对每个元素进行处理,将处理后的值放入返回的数组
console.log(Array.from({ length: 3 }, x => { if (!x) return 2 }));
// map函数里面用到了this关键字,还可以传入Array.from的第三个参数,用来绑定this
// Array.of方法用于将一组值,转换为数组
// Array() 在参数个数不少于2个时才返回参数组成的新数组,一个参数时指定的时是数组的长度
// Array.of总是返回参数值组成的数组。如果没有参数,就返回一个空数组
console.log(Array.of(4,7,9,34,5667, 'test'));
// 数组实例的copyWithin方法,在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员)
// 然后返回当前数组,这个方法会修改当前数组
// target(必需):从该位置开始替换数据。
// start(可选):从该位置开始读取数据,默认为0。如果为负值,表示倒数。
// end(可选):到该位置前停止读取数据,默认等于数组长度。如果为负值,表示倒数。
console.log([1,2,3,4,5].copyWithin(0, 3));
console.log([1,2,3,4,5].copyWithin(0)); // 不指定第二个参数返回原数组
// 数组实例的find方法,用于找出第一个符合条件的数组成员
// 它的参数是一个回调函数,所有数组成员依次执行该回调函数
// 直到找出第一个返回值为true的成员,然后返回该成员
// 如果没有符合条件的成员,则返回undefined
// find方法的回调函数可以接受三个参数,依次为当前的值、当前的位置和原数组
console.log([87,1,4,10,5,53].find((value, index, arr) => value > 5));
// findIndex 返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1
console.log([87,1,4,10,5,53].findIndex((value, index, arr) => value < 5));
// fill方法使用给定值,填充一个数组
// 数组中已有的元素,会被全部抹去
console.log([1,2,3].fill(7));
// fill方法还可以接受第二个和第三个参数,用于指定填充的起始位置和结束位置
console.log([1,2,3].fill(7, 1, 2));
// entries(),keys()和values() 用于遍历数组,都返回一个遍历器对象
// 可以用for...of循环进行遍历
// 唯一的区别是keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历
for (let index of ['a', 'b'].keys()) {
console.log(index);
}
// includes方法返回一个布尔值,表示某个数组是否包含给定的值
// 该方法的第二个参数表示搜索的起始位置,默认为0。如果第二个参数为负数,则表示倒数的位置
// 如果这时它大于数组长度(比如第二个参数为-4,但数组长度为3),则会重置为从0开始
console.log([1,2,3,45].includes(2));
// 数组的空位指,数组的某一个位置没有任何值
// forEach(), filter(), every() 和some()都会跳过空位。
// map()会跳过空位,但会保留这个值
// join()和toString()会将空位视为undefined,而undefined和null会被处理成空字符串
// ES6明确将空位转为undefined
</script>
</body>
</html>