前言
自用,未完
一、数组乱序输出
要求:
- 生成数组,长度为10
- 随机生成可自定义数量的数组,并转为字符串
解:
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]
二、数组元素求和
要求:
- let arr1=[1,2,3,4,5,6] 递归求和
- 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)