0

我有可以用另一个对象数组删除的对象数组,即

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)
 })
4

1 回答 1

0

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%}

于 2021-04-25T21:42:11.320 回答