ES6 Array新增API
静态方法Array.of(arg)Array.from(arg)
实例方法find(callback)findIndex(callback)fill(data)copyWithin(target,[start],[end])includes(data)
静态方法
Array.of(arg)
创建一个具有可变数量参数的新数组 ,用于将一组值,转换为数组
const arr
= Array
.of(5);
console
.log(arr
)
const arr1
= Array
.of(1,2,4,5,2,1);
console
.log(arr1
)
这个方法的主要目的,是弥补数组构造函数Array()的不足。因为参数个数的不同,会导致Array()的行为有差异。
Array
.of()
Array
.of(undefined
)
Array.of总是返回参数值组成的数组。如果没有参数,就返回一个空数组。
可以用下面的代码模拟实现
function ArrayOf(){
return [].slice
.call(arguments
);
}
const arr
= ArrOf(1,2,3,4,5,6)
Array.from(arg)
将类似数组的对象和可迭代(iterable)的对象转为真正的数组
const arr
= Array
.from([1, 2])
let obj
= {
'0': 'a',
'1': 'b',
'2': 'c',
length
: 3
};
const arr
= Array
.from(obj
);
const arr1
= [].slice
.call(obj
);
let div
= document
.getElementsByTagName("div");
const a
= Array
.from(div
);
console
.log(a
);
const b
= Array
.prototype
.slice
.call(div
,0)
console
.log(b
);
const set = new Set(['a', 'b'])
const a
= Array
.from(set)
console
.log(a
);
const str
= 'abc';
console
.log(Array
.from(str
));
const str
= '𠮷';
console
.log(str
.length
);
function countSymbols(string
) {
return Array
.from(string
).length
;
}
console
.log(countSymbols(str
));
实例方法
find(callback)
查找满足条件的第一个元素
const arr
= [1,3,5,7,9]
arr
.find(n
=> n
>5)
findIndex(callback)
查找满足条件的第一个元素下标
const arr
= [1,3,5,7,9]
arr
.findIndex(n
=> n
>5)
fill(data)
用指定的数据填充数组
const arr
= new Array(3);
arr
.fill("qwer")
console
.log(arr
);
const d
= [1,2,3,4,5]
d
.fill(2,2)
console
.log(d
);
copyWithin(target,[start],[end])
在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组
会修改当前数组。
target(必需):从该位置开始替换数据。如果为负值,表示倒数。
start(可选):从该位置开始读取数据,默认为 0。如果为负值,表示从末尾开始计算。
end(可选):到该位置前停止读取数据,默认等于数组长度。如果为负值,表示从末尾开始计算。
const arr
= [1,2,3,4,5]
arr
.copyWithin(0,1)
includes(data)
返回一个布尔值,表示某个数组是否包含给定的值
[1, 2, 3].includes(2)
[1, 2, 3].includes(4)
[1, 2, NaN].includes(NaN)
该方法的第二个参数表示搜索的起始位置,默认为0。 如果第二个参数为负数,则表示倒数的位置,如果这时它大于数组长度(比如第二个参数为-4,但数组长度为3),则会重置为从0开始。
[1, 2, 3].includes(3, 3);
[1, 2, 3].includes(3, -1);