我有这样的数组
let quotes = [
{
quoteNumber :'001',
items : [
{
partnumber : '5551',
supplierQty : 0,
stock : 5
},
{
partnumber : '5552',
supplierQty : 1,
stock : 0
},
{
partnumber : '5553',
supplierQty : 0,
stock : 2
}
]
},
{
quoteNumber : '002',
items : [
{
partnumber : '5554',
supplierQty : 1,
stock : 0
},
{
partnumber : '5552',
supplierQty : 5,
stock : 0
},
{
partnumber : '5553',
supplierQty : 0,
stock : 2
}
]
},
{
quoteNumber : '003',
items : [
{
partnumber : '5554',
supplierQty : 0,
stock : 1
},
{
partnumber : '5552',
supplierQty : 0,
stock : 3
},
{
partnumber : '5553',
supplierQty : 0,
stock : 2
}
]
}
]
我想要的结果是删除报价中具有 vendor Qty === 0 的项目并删除其中每个项目都具有 vendor Qty === 0 的报价
这就是我想要的结果。
let quotes = [
{
quoteNumber :'001',
items : [
{
partnumber : '5552',
supplierQty : 1,
stock : 0
}
]
},
{
quoteNumber : '002',
items : [
{
partnumber : '5554',
supplierQty : 1,
stock : 0
},
{
partnumber : '5552',
supplierQty : 5,
stock : 0
}
]
}
]
这是我的代码
let results = quotes.filter((quote , index) => {
let filterQuote = quote.items.filter((item) => {
return item.supplierQty > 0;
})
return filterQuote.length > 0;
})
console.log(results);
但它只是删除报价 003 only 。它没有删除引用 001 和 002 中的项目。
我该怎么做。感谢帮助
results = [
{
quoteNumber :'001',
items : [
{
partnumber : '5551',
supplierQty : 0,
stock : 5
},
{
partnumber : '5552',
supplierQty : 1,
stock : 0
},
{
partnumber : '5553',
supplierQty : 0,
stock : 2
}
]
},
{
quoteNumber : '002',
items : [
{
partnumber : '5554',
supplierQty : 1,
stock : 0
},
{
partnumber : '5552',
supplierQty : 5,
stock : 0
},
{
partnumber : '5553',
supplierQty : 0,
stock : 2
}
]
}
]
最佳答案
您需要先过滤项目并使用 Array.filter
删除不包含任何项目的引号。
const quotes = [
{
quoteNumber :'001',
items : [
{
partnumber : '5551',
supplierQty : 0,
stock : 5
},
{
partnumber : '5552',
supplierQty : 1,
stock : 0
},
{
partnumber : '5553',
supplierQty : 0,
stock : 2
}
]
},
{
quoteNumber : '002',
items : [
{
partnumber : '5554',
supplierQty : 1,
stock : 0
},
{
partnumber : '5552',
supplierQty : 5,
stock : 0
},
{
partnumber : '5553',
supplierQty : 0,
stock : 2
}
]
},
{
quoteNumber : '003',
items : [
{
partnumber : '5554',
supplierQty : 0,
stock : 1
},
{
partnumber : '5552',
supplierQty : 0,
stock : 3
},
{
partnumber : '5553',
supplierQty : 0,
stock : 2
}
]
}
];
const results = quotes.map(({ items, ...quote }) => ({
...quote,
items: items.filter(({ supplierQty }) => supplierQty > 0)
})).filter(({ items }) => items.length > 0);
console.log(results);
关于javascript - JS如何删除多维数组中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64314555/