[英]I try to write a function that will return the sum of all array elements that are equal to the number passed in the array. How can I do it?
此函数返回数组中所有元素的总和
const array = [4, 7, 24, 7, 0, 10];
const number = 7;
function addTheSameNumbers1(number, array) {
let count = array.length;
for (let i = 0; i < count; i++) {
if (array[i] === number) {
return array.reduce((a,b) => a + b, 0);
}
}
return null;
}
console.log(addTheSameNumbers1(number, array));```
您的reduce()
正在对所有值求和。 这是对单个数字求和的方法:
const array = [4, 7, 24, 7, 0, 10]; const number = 7; function addTheSameNumbers1(number, array) { return array.reduce((accum, val) => val === number ? accum + val : accum , 0); } const result = addTheSameNumbers1(number, array); console.log(result);
你可以得到变量的出现次数和数字的倍数
<script> const countOccurrences = (arr, val) => arr.reduce((a, v) => (v === val ? a + 1 : a), 0); const array = [4, 7, 24, 7, 0, 10]; const number = 7; var accur = countOccurrences(array, number); console.log(accur); console.log(accur * number); </script>
如果我理解正确的话,您希望获得具有与其父数组长度相同的值的元素的总和。 这段代码应该可以。
const filterAndSum = (numbers, query) => {
return numbers
.filter((n) => n === query)
.reduce((n, total) => total + n, 0);
};
console.log(filterAndSum([1,2,3,4,5,4,3,2,1,2,3,2,1], 3))
首先,它过滤不等于父数组长度的元素,然后获取剩余元素的总和。 请注意,此处未实施验证,但我相信您可以轻松做到这一点。
reduce
的替代方法是使用简单的for/of循环来迭代数字,然后将任何找到的数字添加到sum
变量中。
const array = [4, 7, 24, 7, 0, 10]; const number = 7; function sumTheSameNumber(n, arr) { let sum = 0; for (let i of arr) { if (i === n) sum += i; } return sum; } console.log(sumTheSameNumber(number, array));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.