数组自救手册

151 阅读1分钟

前言

自用,未完

一、数组乱序输出

要求:
  1. 生成数组,长度为10
  2. 随机生成可自定义数量的数组,并转为字符串
解:

fill()方法:接收一个函数,使用自定义的元素填充数组

1.生成数组
let arr = Array(10).fill(0).map((item, index) => index++)
//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

2. 洗牌算法
function fn(arr,cut){
 let len = arr.length //数组长度
 let num = len - cut //自定义数量
 while(len > num){
  const index = Math.floor(Math.random() * (len--)) //随机下标
  if(index != len){
   [arr[index],arr[len]] = [arr[len],arr[index]]
  }
 }
 return arr.slice(num)
}
fn(arr,3) //[5, 0, 7]

二、数组元素求和

要求:
  1. let arr1=[1,2,3,4,5,6] 递归求和
  2. let arr2=[1,2,3,[[4,5],6],7,8,9]
解:

reduce()方法:回调函数在数组的每个元素上执行,上一次的输出会作为下一次的一个输入。参数一:累加回调函数的返回值,参数二:处理数组的当前元素

1.递归求和
let arr1=[1,2,3,4,5,6]
function add(arr){
 if(arr.length == 1) return arr[0]
 return arr[0] + add(arr.slice(1))
}
add(arr1)

2.reduce求和
let arr2=[1,2,3,[[4,5],6]]
arr2.toString().split(',').reduce((i,index)=>i+= Number(index),0)