私のサイトへの訪問者の数をブラウザ/バージョン別に記録した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
typeof ...の代わりにObject.prototype.hasOwnProperty()を使用してください。 –
@DenisGiffelerは、もっと長いことをしているようです。私は自分のコードを短縮しようとしています – roryok