likes
comments
collection
share

JavaScript ES6 新特性语法学习(6)- 数组相关语法扩展

作者站长头像
站长
· 阅读数 91

前言

昨天学习了一下ES6中关于字符串的语法扩展,感觉学到了很多东西,今天来认识一下ES6关于数组的语法扩展,数组和字符串一样在JavaScript中都随处可见,非常重要。

forEach

非常简单,用法与ES5中for循环遍历数组基本一致:

var arr = [1, 2, 3]
arr.forEach(item => {
    console.log(item)
})

对比一下ES5:

var arr = [1, 2, 3]
for (let i = 0; i < arr.length; i++) {
    console.log(arr[i])
}

感觉精简了很多,有用!

map

map方法需要传递一个函数,作用就是给数组中的每一个元素做处理,返回新的数组,很常见并且很重要:

var arr = [1, 2, 3]
var new_arr = arr.map((item) => {
    return item += 1
})

console.log(new_arr)  // [ 2, 3, 4 ]

some&every

两个数组元素对比的方法。

some:传递一个方法 ,遍历数组,把数组中的元素与定义的值进行如果一个为判断真就返回真,如果全假就返回假(有真返回真)

every:传递一个方法 ,遍历数组,把数组中的元素与定义的值进行 其中一个判断为假就返回假,如果全真就返回真(有假返回假)

使用代码测试一下:

var arr = [1, 2, 3]
var some_status = arr.some((item) => {
    return item >2
})

var every_status = arr.every((item) => {
    return item >2
})


console.log(some_status)  //  true
console.log(every_status) // false

filter

非常常用, 遍历数组,把数组中的元素与定义的值进行判断,返回符合要求的元素:

var arr = [1, 2, 3]
var filter_arr = arr.filter((item) => {
    return item >2
})
  
console.log(filter_arr)  // [3]

find

遍历数组查找,返回符合条件的第一个元素:

var arr = [1, 2, 3]
var filter_arr = arr.find((item) => {
    return item >2
})

console.log(filter_arr)  // 3

of

将多个元素组合并成一个数组,简单不常用:

var arr = Array.of(1,2,3)
console.log(arr) // [1, 2, 3]

from

对象转数组:

var object = {
    0:1,
    1:2,
    2:3,
    length: 3  // 需要定义长度,不然不会转换成功
}
var from_arr = Array.from(object)

console.log(from_arr)  // [1, 2, 3]

includes

与字符串一样,判断某个元素是否在数组中:

var arr = [1, 2, 3]


console.log(arr.includes(1)) // true
console.log(arr.includes(0)) // false

可以严格检测为NaN的值,在ES5中一般使用indexOf()是做不到的

keys,values,entries

数组迭代方法:

var arr = [1, 2, 3]


for(let item of arr.keys()){
    console.log(item);  // 遍历键
}

for(let item of arr.values()){ 
    console.log(item); // 遍历值
}
for(let item of arr.entries()){ 
    console.log(item);  // 遍历键值
}

使用entries()方法的结果:

[ 0, 1 ]
[ 1, 2 ]
[ 2, 3 ]

fill

覆盖数组,这个比较复杂,可以传一个或者三个参数,传一个参数的时候,参数为覆盖元素的内容,直接覆盖数组,保持原数组长度:

var arr = [1, 2, 3]
var res  = arr.fill(0) 
console.log(res)  // [0, 0, 0]

三个参数时分别为,覆盖元素的内容,覆盖开始位置,覆盖结束位置:

var arr = [1, 2, 3]
var res  = arr.fill(0, 0, 1) 
console.log(res) // [0, 2, 3]

总结

今天接触到的ES6新特性中关于数组的扩展方法比较多,有很多非常常用的方法,有部分的语法跟字符串的扩展方法非常相似,记忆起来就非常快,下篇继续学习ES6语法!

转载自:https://juejin.cn/post/7134715225193840670
评论
请登录