比方說,我有這樣的的Javascript:計算每個字符和屬性名內部對象存儲
var obj = {"a":0, "b":0, "c":0,....., "z":0};
對象和字符串
var str1 = "banana";
如何獲得obj的最終結果有
var obj = {"a":3, "b":1,.....,"n":2};
)
比方說,我有這樣的的Javascript:計算每個字符和屬性名內部對象存儲
var obj = {"a":0, "b":0, "c":0,....., "z":0};
對象和字符串
var str1 = "banana";
如何獲得obj的最終結果有
var obj = {"a":3, "b":1,.....,"n":2};
)
你也許並不需要,最初的對象,只是用減速器字符數組:
:var charFreq = function(x) {
return x.split('').reduce(function(acc, x) {
return acc[x] = ++acc[x] || 1, acc
},{})
}
console.log(charFreq('banana'))
//^ {b:1, a:3, n:2}
如果需要其他字母與零值就可以,結果延長初始目標
var abc = 'abcdefghijklmnopqrstuvwxyz'
.split('')
.reduce(function(a, x){return a[x] = 0, a},{})
var extend = function(x, y) {
Object.keys(y).forEach(function(k){x[k] = y[k]})
return x
}
extend(abc, charFreq('banana'))
console.log(abc)
//^ {a:3, b:1, ..., n:2}
這幾乎解決了我的整個問題。謝謝。但你能解釋一下嗎?我不知道什麼++ acc [x] || 1,acc甚至意味着...... –
看看這是否有所幫助https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce – elclanrs
對不起,我很喜歡JavaScript的新手。我完全迷失了你在分裂部分後用charfreq函數做的事情。我不明白 1)減少 2)線返回acc [x] = ++ acc [x] || 1,acc },{}) –
你應該發佈你試過的東西。如果你還沒有嘗試過,那麼請做,如果你仍然無法弄清楚,請回來。 – Shmoopy
我添加了一個plunk。看問題。謝謝。 –