我试着写一个函数,它将返回等于数组中传递的数字的所有数组元素的总和.我该怎么做呢?



这个函数返回数组中所有元素的和

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);

如果我理解正确,您想要获得与其父数组长度相同的值的元素的总和。这段代码应该可以做到。

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))

首先,它过滤不等于父数组长度的元素,然后获得剩余元素的和。请注意,这里没有实现验证,但我相信您可以很容易地做到这一点。

您可以使用数字

获得变量出现次数的计数和倍数。

<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>

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));

最新更新