【发布时间】:2021-10-26 14:12:21
【问题描述】:
我是 JS 新手。我想跟踪数组中重复对象的数量,在另一个对象中,所以我决定编写一个函数。例如:考虑下面的对象。
const fruits = [{name: 'orange'}, {name: 'orange'}, {name: 'apple'}, {name: 'banana'}];
我想跟踪上面数组中重复对象的数量,所以我写了下面的函数。
function calcDuplicates(fruitObj) {
const duplicates = {};
for (let i of fruitObj) {
duplicates[`${i.name}`] !== "undefined"
? (duplicates[`${i.name}`] += 1)
: (duplicates[`${i.name}`] = 1);
}
return duplicates;
}
我得到的输出是:
{orange: NaN, apple: NaN, banana: NaN}
(预期输出) 我想要的输出是:
{orange: 2, apple: 1, banana: 1}
如何获得预期的输出?我做错了什么?
【问题讨论】:
-
但是
noOfItems是未定义的?代码应该会因错误noOfItems is undefined而崩溃 -
因为
duplicates['${i.name}']一开始是未定义的,当你将1添加到它时,它会给你NaN,导致undefined + 1 => NaN -
duplicates[`${i.name}`]与duplicates[i.name]相同 -
@JeremyThille 很抱歉,在提问时,我将
noOfItems重命名为duplicates并忘记在返回时更改它,我已经更正了。 -
@AdilBimzagh
duplicates[i.name]在第 8 行初始化为1,如果未定义
标签: javascript arrays object duplicates