如果使用 lodash 迭代对象,这是一种更好的方法
a better way if iterating an object using lodash
使用 lodash 我想知道是否有更好的方法。
我有一个如下所示的数组对象。
{
"ALFA ROMEO": {
"MITO": [{
"carData": "stuff"
}]
},
"AUDI": {
"A1": [{
"carData": "stuff"
},
{
"carData": "stuff"
}
],
"Q3": [{
"carData": "stuff"
}],
"A3": [{
"carData": "stuff"
},
{
"carData": "stuff"
},
{
"carData": "stuff"
}
]
}
}
我正在使用 _.forEach 遍历对象来构建与此类似的输出:
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) 是通过合计模型计数来获得每个品牌总数的唯一方法,还是有更好的方法?
谢谢。
没有嵌套循环就无法做到这一点,因为您需要打印每个模型。
您可以使用 _.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>
使用 lodash 我想知道是否有更好的方法。
我有一个如下所示的数组对象。
{
"ALFA ROMEO": {
"MITO": [{
"carData": "stuff"
}]
},
"AUDI": {
"A1": [{
"carData": "stuff"
},
{
"carData": "stuff"
}
],
"Q3": [{
"carData": "stuff"
}],
"A3": [{
"carData": "stuff"
},
{
"carData": "stuff"
},
{
"carData": "stuff"
}
]
}
}
我正在使用 _.forEach 遍历对象来构建与此类似的输出:
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) 是通过合计模型计数来获得每个品牌总数的唯一方法,还是有更好的方法?
谢谢。
没有嵌套循环就无法做到这一点,因为您需要打印每个模型。
您可以使用 _.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>