3 回答
TA贡献1850条经验 获得超11个赞
就目前而言,您的方法从根本上是错误的。您需要做的就是将数组中的每个字符串添加为一个属性(如果还不是一个属性),如果是,则增加其值。
function wordCount(arrayOfStrings) {
const map = {};
for (let i = 0; i < arrayOfStrings.length; ++i) {
if (arrayOfStrings[i] in map)
map[arrayOfStrings[i]]++;
else
map[arrayOfStrings[i]] = 1;
}
return map;
}
该代码检查数组中的每个字符串以查看它是否已经是正在构建的地图(一个普通对象)的一个属性。如果是,则增加该值;如果不是,则创建一个新属性并将其初始化为 1。
使用会更整洁一些.reduce():
function wordCount(arr) {
return arr.reduce(function(map, word) {
if (word in map)
map[word]++;
else
map[word] = 1;
return map;
}, {});
}
TA贡献1831条经验 获得超4个赞
最简洁最简单的方法是reduce
:
const wordCount = arr => arr.reduce((a, c) => ((a[c] = (a[c] || 0) + 1), a), {});
TA贡献1875条经验 获得超3个赞
试试这个(基于你的代码):
function wordCount(arrayOfStrings) {
const map = {};
const arr = arrayOfStrings;
for (let i = 0; i < arr.length; i++) {
map[arr[i]] = (map[arr[i]] || 0) +1;
}
return map;
}
添加回答
举报