[英]remove object in array based on object property with conditions
我有可以用另一個對象數組刪除的對象數組,即
data = [
{"id": 1, name: "a", qty: 1},
{"id": 2, name: "b", qty: 1},
{"id": 2, name: "b", qty: 1, bonusFromId: 3},
{"id": 2, name: "b", qty: 1, bonusFromId: 1},
{"id": 3, name: "c", qty: 1}
]
我想拼接 id 與 bonusFromId 相同的數組
temp = [
{"id": 1, name: "a", qty: 1},
{"id": 3, name: "b", qty: 1}
]
我期望的價值是
[
{"id": 1, name: "a", qty: 1}
{"id": 2, name: "b", qty: 1}
{"id": 3, name: "c", qty: 1}
]
我試過了,但沒有用
data.forEach(x => {
let index = temp.filter(y => x.bonusFromId == y.id).map((item) => { return item.id}).indexOf(x.id)
arr.splice(index, 1)
})
const data = [ {"id": 1, name: "a", qty: 1}, {"id": 2, name: "b", qty: 1}, {"id": 2, name: "b", qty: 1, bonusFromId: 3}, {"id": 2, name: "b", qty: 1, bonusFromId: 1}, {"id": 3, name: "c", qty: 1} ] const temp = [ {"id": 1, name: "a", qty: 1}, {"id": 3, name: "b", qty: 1} ] temp.forEach(t=>{ let find = data.find(e => e.bonusFromId == t.id) // find t.id in data.bonusFromId let index = data.indexOf(find); // get index of item in array data data.splice(index, 1); // splice it console.log(index) }) console.log(data)
.as-console-wrapper{ min-height: 100%}
或如評論中所述:
const data = [ {"id": 1, name: "a", qty: 1}, {"id": 2, name: "b", qty: 1}, {"id": 2, name: "b", qty: 1, bonusFromId: 3}, {"id": 2, name: "b", qty: 1, bonusFromId: 1}, {"id": 3, name: "c", qty: 1} ] const temp = [ {"id": 1, name: "a", qty: 1}, {"id": 3, name: "b", qty: 1} ] temp.forEach(t=>{ let find = data.findIndex(e => e.bonusFromId == t.id) find >= 0? data.splice(find, 1): null console.log(find) }) console.log(data)
.as-console-wrapper{ min-height: 100%}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.