[英]a better way if iterating an object using lodash
使用 lodash 我想知道是否有更好的方法來做到這一點。
我有一個數組 object,如下所示。
{
"ALFA ROMEO": {
"MITO": [{
"carData": "stuff"
}]
},
"AUDI": {
"A1": [{
"carData": "stuff"
},
{
"carData": "stuff"
}
],
"Q3": [{
"carData": "stuff"
}],
"A3": [{
"carData": "stuff"
},
{
"carData": "stuff"
},
{
"carData": "stuff"
}
]
}
}
我正在使用 _.forEach 遍歷 object 來構建與此類似的 output:
ALFA ROMEO - 1
MITO (1)
AUDI - 5
A1 (2)
Q3 (1)
A3 (2)
使用這個我可以到達那里:
_.forEach(jData, (val, key) => {
console.log(key)
_.forEach(val, (val, key) => {
console.log(' ' + key + ' (' + val.length + ')')
})
})
這給我這個:
ALFA ROMEO
MITO (1)
AUDI
A1 (2)
Q3 (1)
A3 (2)
我的問題是:
a) 有沒有沒有雙循環的更好方法?
b) 是通過將 model 計數相加來獲得每個品牌的總數的唯一方法,還是有更好的方法?
謝謝。
沒有嵌套循環就無法做到這一點,因為您需要打印每個 model。
您可以使用_.sumBy()
來獲取模型的總長度,這樣您就可以在循環之前顯示它。
const jData = { "ALFA ROMEO": { "MITO": [{ "carData": "stuff" }] }, "AUDI": { "A1": [{ "carData": "stuff" }, { "carData": "stuff" } ], "Q3": [{ "carData": "stuff" }], "A3": [{ "carData": "stuff" }, { "carData": "stuff" }, { "carData": "stuff" } ] } }; _.forEach(jData, (val, key) => { let total = _.sumBy(_.toArray(val), 'length'); console.log(`${key} - ${total}`) _.forEach(val, (val, key) => { console.log(`${key} (${val.length})`) }) })
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.