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);
添加回答
舉報