Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何删除具有匹配值的对象数组中的对象_Javascript_Arrays_Javascript Objects - Fatal编程技术网

Javascript 如何删除具有匹配值的对象数组中的对象

Javascript 如何删除具有匹配值的对象数组中的对象,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我想检查数组中是否有匹配值的对象,如果它们匹配,请删除索引最低的对象,因为这将是“较旧”的对象 我成功地使用此方法删除了数组中的重复对象,但当我获得这些对象的特定值时,我不确定 someFunction() { let cart = this.state.currentUser.cart const newCartArray = cart.filter((light, index) => { return index === cart.findIndex(obj =

我想检查数组中是否有匹配值的对象,如果它们匹配,请删除索引最低的对象,因为这将是“较旧”的对象

我成功地使用此方法删除了数组中的重复对象,但当我获得这些对象的特定值时,我不确定

someFunction() {
  let cart = this.state.currentUser.cart
    const newCartArray = cart.filter((light, index) => {
      return index === cart.findIndex(obj => {
          obj.use === light.use
      })
    })
  cart = newCartArray
}
或者,如果您需要检查,请使用

let cart = this.state.currentUser.cart;
for( let i =0; i < cart.length; i++) {
    if( cart[i].use === light.use) {
        cart.splice(i,1);
        break;
    }
}

let cart=this.state.currentUser.cart;
for(设i=0;i
您可以获取一张
地图
并使用所需的密钥存储最后一个对象,结果只获取最后存储的对象

var数组=[{id:1,索引:0},{id:2,索引:1},{id:3,索引:2},{id:2,索引:3},{id:3,索引:4},{id:1,索引:5},{id:4,索引:6},{id:5,索引:7}],
result=Array.from(Array.reduce((m,o)=>m.set(o.id,o),new-Map.values());
控制台日志(结果)

.as console wrapper{max height:100%!important;top:0;}
您可以筛选出所有后续项与相关属性匹配的项,如下所示:

const newCartArray = cart.filter((light, i, array) => {
  return !array.slice(i + 1).some(obj => obj.use === light.use);
})
这应该起作用:

someFunction(){
让购物车=this.state.currentUser.cart
const newcartary=cart.filter((灯光,索引)=>{
return cart.slice(索引+1).findIndex(obj=>{
obj.use==light.use
}) === -1;
})
cart=newcartary

}
您是否有一些数据来说明问题?
const newCartArray = cart.filter((light, i, array) => {
  return !array.slice(i + 1).some(obj => obj.use === light.use);
})