需要:对数组中的每一项小于100的数字进行乘2比并且计算总和。例如:arr = [10,20,111,333,50,40,60]
第一种办法应用for循环
1.求数组中小于100的数字 let newArr = [] (1)for(let i=0;i<arr.length;i++) { //arr[i] 为每一项 if(arr[i]<100) { newArr.push(arr[i]) } } (2)for(let i in arr) { //i为每一项的下标 if(arr[i]<100) { newArr.push(arr[i]) } } (3)for(let item of arr) { if(item<100) { //item为数组的每一项 newArr.push(item) } }2.对数组newArr中的每一项*2 let newArr2 = [] (1)for(let i=0; i<newArr.length;i++) { newArr2.push(newArr[i]*2) } (2)for(let i in newArr2) { newArr2.push(newArr[i]*2) } (3)for(let item of newArr) { newArr2.push(item * 2) }3.对新数组newArr2进行求和 let total = 0 (1)for(let i=0;i<newArr2.length;i++) { total += newArr2[i] } (2)for(let i in newArr2) { total += newArr2[i] } (3)for(let item of newArr2) { total += item }
第二种办法:应用高级函数filter/map/reduce
fileter中的回调函数有一个要求:必须返回一个boolean值,当返回true时,函数外部会主动将回调的值退出到新的数组中去,即过滤,将符合条件的增加到新的数组中去reduce为累加,求和。有两个参数,参数一为前一个值,参数二为后值map 为映射操作1.求数组中小于100的数字 let newArr = arr.filter(item => { return item < 100 })2.求newArr中每一项乘2的数组 let newArr2 = newArr.map(item => { return item * 2 })3.求 newArr2 中的总和 let total = newArr2.reduce((preValue,n) => { total = preValue + n },0) 其中0为preValue的初始值
第三种办法:
let total = arr.filter(item => { return item < 100}).map(item => { return item * 2}).reduce((preValue,item) => { return preValue + item},0)
第四:第三种的简写
let total = arr.filter(item => item<100).map(item => item * 2).reduce((preValue,item) => preValue + item)