共计 1241 个字符,预计需要花费 4 分钟才能阅读完成。
需要:对数组中的每一项小于 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)
正文完
发表至: javascript
2022-03-30