3 回答
TA贡献1876条经验 获得超7个赞
使用reduce()
const json = [{"order":1111,"items":[{"colour1":"red","colour2":"yellow"},{"colour1":"red","colour2":"red"},{"colour1":"red","colour2":"red"}]},{"order":2222,"items":[{"colour1":"black","colour2":"blue","colour3":"orange"},{"colour1":"white","colour2":"red","colour3":"green"}]}]
const res = json.reduce((acc, order) => {
let red = order.items.filter(color => color.colour2 === 'red')
return red.length ? [...acc, red.length] : acc
}, [])
console.log(res)
注意:要获得过滤后的结果而不是计数返回[...acc, red]
TA贡献1816条经验 获得超6个赞
将有多种方法解决此问题,但如果您只对出现“colour2”:“red”感兴趣。您也可以使用类似的东西。
let json = [{"order":1111,"items":[{"colour1":"red","colour2":"yellow"},{"colour1":"red","colour2":"red"},{"colour1":"red","colour2":"red"}]},{"order":2222,"items":[{"colour1":"black","colour2":"blue","colour3":"orange"},{"colour1":"white","colour2":"red","colour3":"green"}]}]
let count=[];
for(let i of json){
count.push(JSON.stringify(i).match(/"colour2":"red"/g).length)
}
console.log(count);
TA贡献1829条经验 获得超13个赞
也许这里的效率不是最好的,但它是可以理解的代码:
let count = [];
json.forEach((order, index) => {
count[index] = [];
order.items.forEach((item) => {
if (item.colour2 === "red") {
count[index].push(item.colour2);
}
});
});
console.log(count);
添加回答
举报