假設我有一個json對象,在該對象中,我記錄了根據瀏覽器/版本分組的訪問者數量。JavaScript:向可能不存在的對象添加嵌套屬性
let data = {
browsers: {
chrome: {
43 : 13,
44 : 11
},
firefox: {
27: 9
}
}
}
要增加一個特定的瀏覽器,我需要檢查是否存在幾個鍵,如果沒有,創建它們。
let uap = UAParser(request.headers['user-agent']);
if (typeof uap.browser !== 'undefined') {
if (typeof data.browsers === 'undefined')
data.browsers = {}
if (typeof data.browsers[uap.browser.name] === 'undefined')
data.browsers[uap.browser.name] = {}
if (typeof data.browsers[uap.browser.name][uap.browser.version] === 'undefined')
data.browsers[uap.browser.name][uap.browser.version] = 0
data.browsers[uap.browser.name][uap.browser.version] += 1;
}
我的數據結構越深,瘋狂的東西就越多。
感覺就像在JavaScript中必須有一個更好的方法來做到這一點。有總是一個整潔的方式。任何人都可以在這裏啓發我嗎?
已經有這樣操作的優良庫 - lodash。它有[get](https://lodash.com/docs/4.17.4#set)方法,它可以滿足你的需求:'_.set(object,'a [0] .b.c',4); ' – alexmac
使用Object.prototype.hasOwnProperty()而不是typeof ... –
@DenisGiffeler,這似乎是一個更長的做事方式。我試圖縮短我的代碼 – roryok