ES6 Array新增API

静态方法

Array.of(arg)

创建一个具有可变数量参数的新数组 ,用于将一组值,转换为数组
const arr = Array.of(5);
console.log(arr)	//[5]
const arr1 = Array.of(1,2,4,5,2,1);
console.log(arr1)	//[1, 2, 4, 5, 2, 1]
这个方法的主要目的,是弥补数组构造函数Array()的不足。因为参数个数的不同,会导致Array()的行为有差异。
Array.of() // []
Array.of(undefined) // [undefined]
Array.of总是返回参数值组成的数组。如果没有参数,就返回一个空数组。

可以用下面的代码模拟实现

function ArrayOf(){
  return [].slice.call(arguments);
}
const arr = ArrOf(1,2,3,4,5,6) // [1,2,3,4,5,6]

Array.from(arg)

将类似数组的对象和可迭代(iterable)的对象转为真正的数组
//参数为数组,返回与原数组一样的数组
const arr = Array.from([1, 2])//[1,2]
//一个类数组对象必须含有 length 属性,且元素属性名必须是数值或者可转换为数值的字符。
let obj = {
    '0': 'a',
    '1': 'b',
    '2': 'c',
    length: 3
};
const arr = Array.from(obj); // ['a', 'b', 'c']
// ES5的写法
const arr1 = [].slice.call(obj); // ['a', 'b', 'c']
//没有 length 属性,则返回空数组 []
//元素属性名不为数值且无法转换为数值,返回长度为 length 元素值为 undefined 的数组 [undefined]
//NodeList转为真正的数组
let div = document.getElementsByTagName("div");
const a = Array.from(div);
console.log(a);//[div,div,div]
//ES5的写法
const b = Array.prototype.slice.call(div,0)
//const b = [].prototype.slice.call(div,0)
console.log(b);//[div,div,div]
//可迭代(iterable)的对象转为数组
//Set
const set = new Set(['a', 'b'])
const a = Array.from(set) 
console.log(a);// ['a', 'b']

//String 返回字符串的长度
const str = 'abc';
console.log(Array.from(str)); // ["a", "b", "c"]
//将字符串转为数组,然后返回字符串的长度
//可以避免 JavaScript 将大于\uFFFF的 Unicode 字符,算作两个字符的 bug。
const str = '𠮷';
console.log(str.length);//2
function countSymbols(string) {
    return Array.from(string).length;
}
console.log(countSymbols(str));//1

实例方法

find(callback)

查找满足条件的第一个元素
const arr= [1,3,5,7,9]
arr.find(n => n >5) //7

findIndex(callback)

查找满足条件的第一个元素下标
const arr= [1,3,5,7,9]
arr.findIndex(n => n >5) //3

fill(data)

用指定的数据填充数组
const arr = new Array(3);
arr.fill("qwer")   
console.log(arr);//["qwer", "qwer", "qwer"]

// 可以固定填充
// 第一个参数是填充内容,
// 第二个参数(可选)是起始索引,默认是0,
// 第三个参数(可选)是终止索引,默认值为 this.length
const d = [1,2,3,4,5]
d.fill(2,2)
console.log(d);//[1,2,2,2,2]+

copyWithin(target,[start],[end])

在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组
会修改当前数组。
target(必需):从该位置开始替换数据。如果为负值,表示倒数。
start(可选):从该位置开始读取数据,默认为 0。如果为负值,表示从末尾开始计算。
end(可选):到该位置前停止读取数据,默认等于数组长度。如果为负值,表示从末尾开始计算。
const arr = [1,2,3,4,5]
arr.copyWithin(0,1)//[2, 3, 4, 5, 5]

includes(data)

返回一个布尔值,表示某个数组是否包含给定的值
[1, 2, 3].includes(2)     // true
[1, 2, 3].includes(4)     // false
[1, 2, NaN].includes(NaN) // true

该方法的第二个参数表示搜索的起始位置,默认为0。
如果第二个参数为负数,则表示倒数的位置,如果这时它大于数组长度(比如第二个参数为-4,但数组长度为3),则会重置为从0开始。

[1, 2, 3].includes(3, 3);  // false
[1, 2, 3].includes(3, -1); // true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值