JS数组变换
最近写项目经常用到数组,这里对数据的一些属性附带例子进行一次小总结!
数组两大难点:splice、reduce
重要语法
以下语法都不会改变原数组
map
n变n
例子:
使数组每个数都乘平方
let arr=[1,2,3,4,5,6]
for(let i=0; i<arr.length; i++){
arr[i] = arr[i]*arr[i]
}
=》
36
arr
=》
(6) [1, 4, 9, 16, 25, 36]
用map来变换:
let arr=[1,2,3,4,5,6]
undefined
arr.map(item => item*item)
=》
[1, 4, 9, 16, 25, 36]
filter
n变少
例子:
let arr=[1,2,3,4,5,6]
arr.filter(item => item %2 ===0 ? true :false )
// 如果item除2的余数为0,则返回true(显示),否则返回false(不显示)
=》
(3) [2, 4, 6]
//arr.filter(item => item %2 ===0 ? true :false ) 可以缩写成 arr.filter(item => item %2 ===0)
reduce
n变1个数
例子1:
假设我们让数组里的数都相加
let arr=[1,2,3,4,5,6]
let sum = 0
for(let i = 0; i<arr.length; i++){
sum = sum + arr[i] //可以改成 sum += arr[i],+与=间不可有空格
}
console.log(sum)
=》
21
用reduce语法来:
let arr=[1,2,3,4,5,6]
arr.reduce((sum,item) =>{return sum+item } ,0) //{return sum+item }表示将本次结果作为下一次继续计算的值,0表示初始值均为0
=》
21
例子2:
使数组每个数都乘平方
let arr=[1,2,3,4,5,6]
arr.reduce((result,item) => {
if(item % 2 === 1){
return result
}else{
return result.concat(item)
}
},[])
=》
(3) [2, 4, 6]