gpt4 book ai didi

javascript - 如何使用 javascript 或 jquery 从 arrayList 中删除对象?

转载 作者:行者123 更新时间:2023-11-30 14:09:30 25 4
gpt4 key购买 nike

我有一个正在推送的 arrayList:

imageList.push({
docId: docId,
letterNo: letterNo,
seqNo: seqNo
});

首先在我的数组中推送的数据是 docId:1 ,letterNo:1,seqNo:1 这是:

"{"docId":1,"letterNo":1,"seqNo":1}"

另一次我发送的新数据docId:2 ,letterNo:1,seqNo:1 是:

 "{"docId":2,"letterNo":1,"seqNo":1}"

我想将 arrayList 的所有旧值与新值进行比较,如果所有这三个属性都匹配,那么我需要从 arrayList 中切出旧对象。例如,如果我再次发送 "{"docId":1,"letterNo":1,"seqNo":1}",那么旧对象应该从 arraylist 中弹出,因为它与旧对象匹配对象和当前对象需要被推送。所以我尝试了:

imageList = imageList
.filter(function (
obj) {
return (obj.docId !== docId && obj.letterNo !== letterNo && obj.seqNo !== seqNo);
});

虽然两个对象 1 和 2 的 docId 不同,但需要推送,但它只是从 arrayList 中删除所有对象,虽然三个属性都不匹配。

最佳答案

var newData = {
"docId":2,
"letterNo":1,
"seqNo":1
};
//Solution using filters
var insertNewData = false;
var imageList = [{
"docId":1,
"letterNo":1,
"seqNo":1
},
{
"docId":2,
"letterNo":1,
"seqNo":1
},
{
"docId":3,
"letterNo":1,
"seqNo":1
}];
imageList = imageList.filter(function(oldData){
if(oldData["docId"] == newData["docId"] && oldData["letterNo"] == newData["letterNo"] && oldData["seqNo"] == newData["seqNo"])
{
insertNewData = true;//a flag
return false;//remove old data from array
}
else
return true;
});
if(insertNewData)
{
imageList.push(newData);
insertNewData = false;
console.log("old data is removed and new data is pushed using filters",imageList);
}

除此之外,我想提供一些解决方案,以防止删除项目并将删除的项目再次添加到数组中。因为如果旧数据与新数据相似,则不需要删除旧数据。相反,如果旧数据已经存在,您需要告诉您的程序不要存储新数据。

//For searching objects in an array, convert objects into strings.
for(var i in imageList)
{
imageList[i] = JSON.stringify(imageList[i]);
}

//Solution 1: Using Array.includes()
if(!imageList.includes(JSON.stringify(newData)))
imageList.push(JSON.stringify(newData));

//Solution 2: Using Array.indexOf()
if(imageList.indexOf(JSON.stringify(newData)) == -1)
imageList.push(JSON.stringify(newData));

您的过滤器不起作用,因为return (obj.docId !== docId && obj.letterNo !== letterNo && obj.seqNo !== seqNo); 将返回 true。如果满足该条件,则需要返回 false,以便从数组中过滤掉旧值。

关于javascript - 如何使用 javascript 或 jquery 从 arrayList 中删除对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54744543/

25 4 0