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;
}
添加回答
舉報