Posts Array的方法集锦
Post
Cancel

Array的方法集锦

Array.from: 将声明的对象转为数组

1
2
let array = {0:1,1:2,2:3,length:3}
Array.from(array) // [1,2,3]

区别于扩展运算符:…只能把拥有迭代器的伪数组转为数组,如arguments、map、set

Array.reduce(): 对数组进行某种操作,加减乘除,最后返回一个值

1
2
3
4
5
6
7
8
let array=[1,2,3,4]
//prev当前值,且会将这次累加结果作为下一次的prev值,current当前值,currentIndex当前索引,array数组
let total=array.reduce((prev,current,currentIndex,array)=>{
    return prev+current
})
console.log(total) // 10
第一次循环, prev = array[0], current = array[1], currentIndex = 1;
之后的, prev等于上一次相加的值

传入初始值:**reduce第二个参数可以初始化prev的值**

1
2
3
4
5
let array=[1,2,3,4]
let total=array.reduce((prev,current,currentIndex,array)=>{
    return prev+current
},4)
console.log(total) // 14

Array.foreach(): 用于调用数组的每个元素,并将元素传递给回调函数

1
2
3
4
Array.forEach(function(currentValue, index, arr), thisValue)
1.没有返回值,总是返回undefined,不能终止循环, 可以用throw Error()来终止
2.当数组中元素是值类型,forEach绝对不会改变数组;当是引用类型,则可以改变数组
3.不支持链式操作

Array.map(): 数组返回成一个映射后的数组

1
2
let arr = [1,2,3].map(item => item+1)
console.log(arr) // [2,3,4]

Array.every(): 数组都满足某条件则返回true,否则返回false

1
2
3
4
5
let array=[1,2,3,4]
let total=array.every(item=>{
    return item < 0
})
console.log(total) // false

Array.find(): 返回第一个满足条件的值,若找不到则返回undefined; array.findIndex(): 返回第一个满足条件的值的位置,若找不到则返回-1

1
2
3
4
5
let array=[1,2,3,4]
let total=array.find(item=>{
    return item>2
})
console.log(total) // 3

Array.some(): 是否有其中一个值满足条件,如果是则返回true,如果不是则返回false

1
2
3
4
5
let array=[1,2,3,4]
let total=array.some(item=>{
    return item>2
})
console.log(total) // true

Array.filter(): 过滤掉返回为false的项,最后重新生成一个数组

1
2
3
4
5
6
let array=[1,2,3,4]
let total=array.filter(item=>{
    return item>2
})
都为false,显示空数据 []
console.log(total) // [3,4]

Array.includes(): 用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false

1
2
3
let array=[1,2,3,4]
let total=array.includes(2)
console.log(total) //true

Array.flat(Infinity): 多维数组扁平化

1
2
3
4
5
6
Infinity 为扁平化的维度

var arr = [1,2,3,[6,[4,5]]];
arr.flat(); // [1,2,3,6,[4,5]]
arr.flat(2); // [1,2,3,6,4,5]
arr.flat(Infinity); // [1,2,3,6,4,5]

do…while: 当满足条件执行do语块

1
2
3
4
let flag=5;
do{
	flag--;
}while(flag)

for…in

1
2
3
4
for (let property in object) {
  console.log(property) //property name(key)
  console.log(object[property]) //property value
}

for…of

1
2
3
for (let v of object) {
 	console.log(v) // object[i]
}

Array.sort Cannot assign to read only property '0' of object '[object Array]': Array.slice( ).sort( )

This post is licensed under CC BY 4.0 by the author.