如果Javascript中的值相同,如何比较和删除数组中的对象?

如果Javascript中的值相同,如何比较和删除数组中的对象?,javascript,reactjs,Javascript,Reactjs,这里有两个物体 let obj1 = { "name": "Gym", "createdAt": "2021/01/14 04:17:01", "id": "1f137fd1-0d3c-4eb0-b045-a13a77971887", "songs": [ { "userId": 1, &q

这里有两个物体

let obj1 = {
  "name": "Gym",
  "createdAt": "2021/01/14 04:17:01",
  "id": "1f137fd1-0d3c-4eb0-b045-a13a77971887",
  "songs": [
    {
      "userId": 1,
      "id": 1,
      "title": "quidem molestiae enim",
      "songId": "36a8d4a7-eeb1-4f1a-81d4-20f3ce682da9"
    },
    {
      "userId": 1,
      "id": 1,
      "title": "quidem molestiae enim",
      "songId": "e0009b28-cfe4-455f-ada4-21d2b79c9ee9"
    }
  ]
}

let obj2 = {userId: 1, id: 1, title: "quidem molestiae enim", songId: "36a8d4a7-eeb1-4f1a-81d4-20f3ce682da9"}

从以上两个对象中,我需要循环obj1数组并比较其songs.songId===obj2.songId。如果值相同,我需要从songs数组中剪切该特定对象

示例

obj1.songs[0]中的songId。songId==obj2.songId
。因为值相同,所以必须从songs数组中剪切song对象。结果一定是这样

o/p

{
  "name": "Gym",
  "createdAt": "2021/01/14 04:17:01",
  "id": "1f137fd1-0d3c-4eb0-b045-a13a77971887",
  "songs": [
    {
      "userId": 1,
      "id": 1,
      "title": "quidem molestiae enim",
      "songId": "e0009b28-cfe4-455f-ada4-21d2b79c9ee9"
    }
  ]
}
非常感谢您的建议或帮助。提前感谢

您可以使用该方法

Filter方法返回一个新数组,其中包含通过提供的函数(该函数测试数组的每个项)的所有数组项

让obj1={
名称:“健身房”,
创建日期:“2021/01/14 04:17:01”,
id:'1f137fd1-0d3c-4eb0-b045-a13a77971887',
歌曲:[
{
用户ID:1,
id:1,
标题:'quidem molestiae enim',
歌曲编号:“36a8d4a7-eeb1-4f1a-81d4-20f3ce682da9”,
},
{
用户ID:1,
id:1,
标题:'quidem molestiae enim',
歌曲编号:“e0009b28-cfe4-455f-ada4-21d2b79c9ee9”,
},
],
};
常数obj2={
用户ID:1,
id:1,
标题:'quidem molestiae enim',
歌曲编号:“36a8d4a7-eeb1-4f1a-81d4-20f3ce682da9”,
};
obj1.songs=obj1.songs.filter((x)=>x.songId!==obj2.songId);
控制台日志(obj1)
var obj1={
“名称”:“健身房”,
“createdAt”:“2021/01/14 04:17:01”,
“id”:“1f137fd1-0d3c-4eb0-b045-a13a77971887”,
“歌曲”:[
{
“用户ID”:1,
“id”:1,
“头衔”:“quidem molestiae enim”,
“songId”:“36a8d4a7-eeb1-4f1a-81d4-20f3ce682da9”
},
{
“用户ID”:2,
“id”:2,
“头衔”:“quidem molestiae enim”,
“songId”:“e0009b28-cfe4-455f-ada4-21d2b79c9ee9”
},
{
“用户ID”:3,
“id”:3,
“头衔”:“quidem molestiae enim”,
“songId”:“e0009b28-cfe4-455f-ada4-21d2b79c9ee9”
}
]
}
var obj2={userId:1,id:1,title:“quidem molestiae enim”,songId:“36a8d4a7-eeb1-4f1a-81d4-20f3ce682da9”}
var f2=[];
var final=obj1.songs.map(函数(a){
if(a.songId!=obj2.songId)
f2.推动(a);
});
obj1.1=f2;

控制台日志(obj1)您可以这样做

obj1.songs = obj1.songs.filter(s => s.songId != obj2.songId)
让obj1={
“名称”:“健身房”,
“createdAt”:“2021/01/14 04:17:01”,
“id”:“1f137fd1-0d3c-4eb0-b045-a13a77971887”,
“歌曲”:[
{
“用户ID”:1,
“id”:1,
“头衔”:“quidem molestiae enim”,
“songId”:“36a8d4a7-eeb1-4f1a-81d4-20f3ce682da9”
},
{
“用户ID”:1,
“id”:1,
“头衔”:“quidem molestiae enim”,
“songId”:“e0009b28-cfe4-455f-ada4-21d2b79c9ee9”
}
]
}
让obj2={userId:1,id:1,title:“quidem molestiae enim”,songId:“36a8d4a7-eeb1-4f1a-81d4-20f3ce682da9”}
obj1.songs=obj1.songs.filter(s=>s.songId!=obj2.songId)
console.log('obj1',obj1)
您应该改用filter()。映射用于更改数组中项目的结构。