JS数组变换小结

116 阅读1分钟

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]