从JSON对象删除记录Javascript
如果我有文件名并想删除整个记录 例如filename 3.jpg我想删除该文件名的整个记录。我怎么做? 多一点细节是我想删除这个纪录 { “状态”: “成功”, “文件名”: “3.JPG”, “mainpic”: “假”, “fullurl”:”。 ./userimages/5c49c449-50b4-43e4-b218-5913b59bd994.jpg” },从JSON对象删除记录Javascript
[
{
"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"
}
]
没有为这一个简单的解决方案..
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
我做什么,我反复源阵列,并通过Json的节点到目的数组,如果文件名不等于“3。 JPG”。您可以再次使用destArray替换srcArr以将结果转换为原始JSON。
有点修改我没有得到这个工作。它与Westo提供的空记录有相同的问题。 – scripter78 2012-03-15 06:45:35
不知道,你能告诉你做了什么修改吗? – 2012-03-15 10:57:41
var p = 0; (picturearr){ if(picturearr [i] .filename!= n)destArr [p] = picturearr [i]; p ++; } } – scripter78 2012-03-15 15:28:45
试试这个功能:
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);
}
}
和呼叫deleteRecordByFileName (yourArray, "3.jpg");
我已经测试过这个,但一直没能得到它的工作 – scripter78 2012-03-15 06:44:43
它工作正常,检查这个小提琴http://jsfiddle.net/5MUnf/ – Nemoy 2012-03-15 07:15:01
这将做到这一点。可以更好地使用jQuery。
for(var i in demo) {
if(demo[i].filename === "3.jpg") {
delete demo[i];
}
}
好吧所以我尝试了这一个,我喜欢这个简单但我发现,虽然这确实删除了有问题的记录,但它并没有移动剩余的记录来填充这个地方,所以你最终得到一个空记录。 – scripter78 2012-03-15 06:43:20
var p = 0; (picturearr){ if(picturearr [i] .filename!= n)destArr [p] = picturearr [i]; p ++; alert('picture array'+ picturearr [i] .filename +'N value'+ n +'position'+ i); } } – scripter78 2012-03-15 06:48:24
比Nemoy的回答更短
(function (myArr, fileName) {
for (var i =0; i < myArr.length; i++) {
if (myArr[i].filename === fileName) {
myArr.splice(i, 1);
return;
}
}
})(srcArr, "3.jpg");
我不敢说我不知道如何甚至impliment这一个 – scripter78 2012-03-15 06:44:24
好,我有几个很好的答案,我也结束了是下面的代码去。因为拼接选项不会从要删除的节点位置添加空节点。另外它是我能找到的最干净的选项。这是这里提供的代码的混合体,所以我相信每个人都确实提供了很好的信息。
for (var i in picturearr) {
if (picturearr[i].filename === n) {
picturearr.splice(i, 1);
}
}
如果可能的话,最好是阻止它进入你的json结果,当你需要这些文件时。你没有使用尽可能多的带宽,你没有改变你的JSON对象:-) – mimo 2012-03-14 06:14:44