不能使用函数查找数组部分的和(javascript)



我有两个这样的测试用例(可能还有另一个),一些数组像那些:

input: [{
name: 'Javascript',
coin: 1000
}, {
name: 'PHP',
coin: 1200
}, {
name: 'Dart',
coin: 1400
}, {
name: 'Ruby',
coin: 1600
}, {
name: 'ReactJS',
coin: 1600
}, {
name: 'React-Native',
coin: 1800
}, ]

intput: [{
name: 'Javascript',
coin: 1000
}, {
name: 'PHP',
coin: 1200
}, {
name: 'Dart',
coin: 1400
}]

我必须写一个javascript程序来找到硬币的和,例如,第一个是8600,第二个是3600。

我必须使用"reduce"函数。

这是我的

function run(courses) {
var i = 0;
var totalcoin = courses.reduce (function(total, course) {
i++;
return total + course.coin;
},0);

但是它告诉我,我有错误:error: expected undefined = 8600.

对于这个问题,你能给我一些建议吗?非常感谢您的宝贵时间。

你是这个意思吗?

您的run函数是不完整的,它应该在减少数组后返回totalCoins值,并且您需要运行该函数以实际获得值

const array_first = [{ name: 'Javascript', coin: 1000 }, { name: 'PHP', coin: 1200 }, { name: 'Dart', coin: 1400 }, { name: 'Ruby', coin: 1600 }, { name: 'ReactJS', coin: 1600 }, { name: 'React-Native', coin: 1800 }]
const array_second = [{ name: 'Javascript', coin: 1000 }, { name: 'PHP', coin: 1200 }, { name: 'Dart', coin: 1400 } ];
const sum_first = run(array_first);
const sum_second = run(array_second);
console.log(`sum of coins in first array => ${sum_first}`);
console.log(`sum of coins in second array => ${sum_second}`);

function run(array) {
const sum = array.reduce((acc, curr) => acc + curr.coin, 0);
return sum;
}

参考材料: Array.prototype.reduce ()

所以不需要迭代器变量。比如

const sumOfCoins = courses.reduce((accumulator, course) => accumulator + course.coin, 0);

应该会给你正确的答案。reduce函数遍历数组的所有元素(当然)。累加器表示当前的计算值。在你的例子中,累加器被"拖拽",每个元素都被加到前一个和上。末尾的0是起始值,因此第一次操作的累加器将为0。课程的返回值。

在这种情况下,一个简单的forEach循环可以帮助您:

基本上,你必须循环遍历数组中的每个元素,并将该元素中的coin值添加/连接到一个变量中。

var input = [ { name: 'Javascript', coin: 1000 }, { name: 'PHP', coin: 1200 }, { name: 'Dart', coin: 1400 }, { name: 'Ruby', coin: 1600 }, { name: 'ReactJS', coin: 1600 }, { name: 'React-Native', coin: 1800 }, ]
function sumOfCoins(coinsArray){
let totalCoins = 0;
input.forEach((element)=>{
totalCoins += element.coin;
})
console.log(totalCoins); // 8600
}
sumOfCoins(input);

1)不需要初始化i

var i = 0;    // Not required
...
i++;          // Not required

您可以简单地将one-liner设置为:

const run = (courses) => courses.reduce((acc, { coin }) => acc + coin, 0);

const input = [{
name: "Javascript",
coin: 1000,
},
{
name: "PHP",
coin: 1200,
},
{
name: "Dart",
coin: 1400,
},
{
name: "Ruby",
coin: 1600,
},
{
name: "ReactJS",
coin: 1600,
},
{
name: "React-Native",
coin: 1800,
},
];
function run(courses) {
var totalcoin = courses.reduce(function(total, course) {
return total + course.coin;
}, 0);
console.log(totalcoin);
}
run(input);

如果您想要更简单的语法,您可以使用for..of循环

function run(courses) {
let totalcoin = 0;
for (let obj of courses) {
totalcoin += obj.coin;
}
console.log(totalcoin);
}

,您可以使用object destructuring作为

进一步简化它
function run(courses) {
let totalcoin = 0;
for (let { coin } of courses) {
totalcoin += coin;
}
console.log(totalcoin);
}

相关内容

  • 没有找到相关文章

最新更新