如何检查json数组中是否存在值?如果找到匹配项,请删除键值对

时间:2017-08-17 10:29:17

标签: javascript jquery ajax sharepoint-2013

我有一个名为AllLinks的sharepoint列,其中im存储数组为:

[{"AllLinks":"Link9","LinkURL":"http://www.Link9.com"},   
 {"AllLinks":"Link6","LinkURL":"http://www.Link6.com"}]

如何检查对象数组中是否存在值,如果找到匹配项,则删除键值对。

例如,如果值Link6匹配,则使用javascript / jquery从数组中完全删除该条目。我尝试过:

var newA = data.d.results.filter(function (item) return item.AllLinks !== x;});  

item.AllLinks再次返回完整的数组

因为AllLinks是我的共享点列表中的一列。

2 个答案:

答案 0 :(得分:5)

你可以在这里以一种简单的方式做到这一点:

var jsonArry = [{"AllLinks":"Link9","LinkURL":"http://www.Link9.com"},{"AllLinks":"Link6","LinkURL":"http://www.Link6.com"}];

var value = "Link6";

for(var i=0; i<jsonArry.length; i++){
   if(jsonArry[i].AllLinks === value){
        jsonArry.splice(i,1);
   }
}

console.log(JSON.stringify(jsonArry));

如果您确定value密钥是唯一的,请在删除对象后在break内的for循环内添加if关键字,以防止不必要的像这样循环,

for(var i=0; i<jsonArry.length; i++){
   if(jsonArry[i].AllLinks === value){
       jsonArry.splice(i,1);
       break;
   }
}

答案 1 :(得分:2)

您可以使用过滤功能:

var a = [{"AllLinks":"Link9","LinkURL":"http://www.Link9.com"},{"AllLinks":"Link6","LinkURL":"http://www.Link6.com"}]

var newA = a.filter(function (item) {
    return item.AllLinks !== "Link6";
});