未捕获类型错误:无法使用'in'运算符在未定义中搜索'car'



我正在尝试定义sum对象,它跟踪传递给"的每个字符串的计数;数据";变量错误显示总数未定义。在reduce函数中将第二个参数声明为{}以定义total还不够吗。

const data = [
'car',
'car',
'truck',
'truck',
'bike',
'walk',
'car',
'van',
'bike',
'walk',
'car',
'van',
'car',
'truck'
];
const sum = data.reduce((total, key) => {
if (key in total) total[key]++;
else total[key] = 1;
}, {});

您需要在reduce()回调中返回一个值,该值将在下一次迭代中用作累加器(在本例中为total(。

const data = ['car', 'car', 'truck', 'truck', 'bike', 'walk', 'car', 'van', 'bike', 'walk', 'car', 'van', 'car', 'truck' ];
const sum = data.reduce((total,key) => {
if(key in total) 
total[key]++; 
else 
total[key] = 1; 
return total;
},
{});
console.log(sum)

你也可以在一行中做到这一点

const data = ['car', 'car', 'truck', 'truck', 'bike', 'walk', 'car', 'van', 'bike', 'walk', 'car', 'van', 'car', 'truck' ];
const sum = data.reduce((total, key) => ({...total, [key]: (total[key] || 0) + 1}), {});
console.log(sum)

最新更新