简体   繁体   English

从JSON对象Javascript中删除记录

[英]Delete Record from JSON Object Javascript

If I have the filename and want to delete an entire record for example filename 3.jpg I want to delete the entire record for that filename. 如果我有文件名,并且想要删除整个记录,例如文件名3.jpg,我想删除该文件名的整个记录​​。 how do I do that? 我怎么做? a bit more specifics is I want to remove this record { "status": "success", "filename": "3.jpg", "mainpic": "false", "fullurl": "../userimages/5c49c449-50b4-43e4-b218-5913b59bd994.jpg" }, 更具体的一点是我想删除此记录{“ status”:“ success”,“ filename”:“ 3.jpg”,“ mainpic”:“ false”,“ fullurl”:“ ../userimages/5c49c449- 50b4-43e4-b218-5913b59bd994.jpg“},

[
{
    "status": "success",
    "filename": "1.jpg",
    "mainpic": "false",
    "fullurl": "../userimages/f0380e08-18de-4fdb-80a2-a912809bda97.jpg"
},
{
    "status": "success",
    "filename": "2.jpg",
    "mainpic": "false",
    "fullurl": "../userimages/7a4362c8-c9c5-48ee-8672-c332eae59f37.jpg"
},
{
    "status": "success",
    "filename": "3.jpg",
    "mainpic": "false",
    "fullurl": "../userimages/5c49c449-50b4-43e4-b218-5913b59bd994.jpg"
},
{
    "status": "success",
    "filename": "eb0b4954-342c-4c3b-87fe-4744511c1b80.jpg",
    "mainpic": "false",
    "fullurl": "../userimages/eb0b4954-342c-4c3b-87fe-4744511c1b80.jpg"
},
{
    "status": "success",
    "filename": "e23ce9e8-5062-41d4-8aea-d11aa795ac45.jpg",
    "mainpic": "true",
    "fullurl": "../userimages/e23ce9e8-5062-41d4-8aea-d11aa795ac45.jpg"
},
{
    "status": "success",
    "filename": "d6343604-e6eb-4caa-82bf-2b5c2b346f71.jpg",
    "mainpic": "false",
    "fullurl": "../userimages/d6343604-e6eb-4caa-82bf-2b5c2b346f71.jpg"
},
{
    "status": "success",
    "filename": "9768f36a-61b8-4f15-995c-28e38dfe48ad.JPG",
    "mainpic": "false",
    "fullurl": "../userimages/9768f36a-61b8-4f15-995c-28e38dfe48ad.JPG"
}

] ]

Try this function: 试试这个功能:

function deleteRecordByFileName (myArr, fileName) {
    var index = null;
    for (var i =0; i < myArr.length; i++) {
        if (myArr[i].filename === fileName) {
            index = i;
            break;
        }
    }
    if (index !== null) {
        myArr.splice(index, 1);
    }
}

and call deleteRecordByFileName (yourArray, "3.jpg"); 并调用deleteRecordByFileName (yourArray, "3.jpg");

There is one simple solution for this.. 有一个简单的解决方案。

        var destArr=[];
        var srcArr=[{status:"success",filename:"1.jpg",mainpic:"false",fullurl:"../userimages/f0380e08-18de-4fdb-80a2-a912809bda97.jpg"},{status:"success",filename:"2.jpg",mainpic:"false",fullurl:"../userimages/7a4362c8-c9c5-48ee-8672-c332eae59f37.jpg"},{status:"success",filename:"3.jpg",mainpic:"false",fullurl:"../userimages/5c49c449-50b4-43e4-b218-5913b59bd994.jpg"},{status:"success",filename:"eb0b4954-342c-4c3b-87fe-4744511c1b80.jpg",mainpic:"false",fullurl:"../userimages/eb0b4954-342c-4c3b-87fe-4744511c1b80.jpg"},{status:"success",filename:"e23ce9e8-5062-41d4-8aea-d11aa795ac45.jpg",mainpic:"true",fullurl:"../userimages/e23ce9e8-5062-41d4-8aea-d11aa795ac45.jpg"},{status:"success",filename:"d6343604-e6eb-4caa-82bf-2b5c2b346f71.jpg",mainpic:"false",fullurl:"../userimages/d6343604-e6eb-4caa-82bf-2b5c2b346f71.jpg"},{status:"success",filename:"9768f36a-61b8-4f15-995c-28e38dfe48ad.JPG",mainpic:"false",fullurl:"../userimages/9768f36a-61b8-4f15-995c-28e38dfe48ad.JPG"}];
        for(i in srcArr){ 
          if(srcArr[i].filename!="3.jpg") 
                destArr[i]=srcArr[i];
          }
        // destJson contains the content excluding node with 3.jpg
        //You can replace the original content with destJson
        srcArr=destArr; 
//Now srcArr contains everything excluding with 3.jpg

What I did is, I iterated the source array and passed Json nodes into destination array if file name is not equal to '3.jpg'. 我要做的是,如果文件名不等于“ 3.jpg”,则迭代源数组并将Json节点传递到目标数组。 You can replace srcArr by destArray again to have result into original JSON. 您可以再次用destArray替换srcArr,以将结果转换为原始JSON。

This will do the trick. 这将达到目的。 Could be nicer using jQuery. 使用jQuery可能会更好。

for( var i in demo ) {
    if(demo[i].filename === "3.jpg") {
        delete demo[i];
    }
}

shorter than Nemoy's answer 比尼莫伊的答案短

(function (myArr, fileName) {
    for (var i =0; i < myArr.length; i++) {
        if (myArr[i].filename === fileName) {
            myArr.splice(i, 1);
            return;
        }
    }
})(srcArr, "3.jpg");

Ok I got a few good answers What I did end up going with is the below code. 好的,我得到了一些很好的答案,最后得到的是下面的代码。 as the splice option keeps from a null node being added in place of the node I want to remove. 因为拼接选项避免添加一个空节点来代替我要删除的节点。 Plus it is the cleanest option I could find. 另外,这是我能找到的最干净的选择。 This is a mixture of the codes that were provided here so I believe everyone really did provide good information. 这是此处提供的代码的混合,因此我相信每个人都确实提供了很好的信息。

for (var i in picturearr) {
if (picturearr[i].filename === n) {
    picturearr.splice(i, 1); 
}
} 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM