JavaScript数组热闹的循环和ES6中数组新特性
数组:
ES5里面新增一些东西
循环:
1.for for(let i=0; i<arr.length; i++)
2.while
arr.forEach() //代替普通for
arr.forEach(function(val,index,arr){
console.log(val,index,arr)
})
arr.map() //非常有用,做数据交互, “映射”
正常情况下,需要配合return,返回是一个新数组;若没有return,相当于forEach
注意:平时只要用return,一定要有return
重新整理数据结构:[{title:'aaa'}] -> [{t:'aaa'}]
arr.filter():过滤,过滤一些不合格‘元素’,如果回调函数返回true,就留下来
arr.some() 类似查找,数组中某一个元素复合条件,返回true
arr.every() 数组里面所有元素都符合条件,才返回true
其实以上循环方法可以接收两个参数:
arr.forEach/map...(循环回调函数,this指向谁);
-----------------------------------------------------------------------
arr.reduce() //从左往右 参数(prev,curr,index,arr)
求数组的和、阶乘
arr.reduceRight() //从右往左
-------------------------------------------------------------------------
ES2017新增一个运算符:幂 Math.pow(2,3)可以写成 2 ** 3 了
====================================================
for...of
arr.keys() 数组下标
arr.entries() 数组某一项
for(let val of arr){
console.log(val)
}
====================================================
let arr = [1,2,3] let arr2 = [...arr]
let arr2 = Array.from(arr)
Array.from作用:把类数组(获取一组元素、arguments...)对象转成数组
个人观点:只要有length属性,就能用Array.from()
let json = {
1:'a',
2:'b',
3:'c',
length:3
}
let arr = Array.from(json) //arr ==['a','b','c'] 如果length变成2 arr==['a','b']
Array.of() 把一组值转成数组
let arr = Array.of('a','b','c')// arr == ['a','b','c']
arr.find():查找,找出第一个符合条件的数组成员,如果没找到,返回undefined
arr.findIndex() 找到的是位置,没有返回-1
arr.fill() 填充 arr.fill(填充的东西,开始位置,结束位置)
在ES2016新增
arr.includes()