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

sau*_*ava 0 javascript ajax jquery sharepoint-2013

我有一个名为AllLinks的共享点列,其中我将数组存储为:

[{"AllLinks":"Link9","LinkURL":"http://www.Link9.com"},   
 {"AllLinks":"Link6","LinkURL":"http://www.Link6.com"}]
Run Code Online (Sandbox Code Playgroud)

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

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

var newA = data.d.results.filter(function (item) return item.AllLinks !== x;});  
Run Code Online (Sandbox Code Playgroud)

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

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

Ank*_*wal 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));
Run Code Online (Sandbox Code Playgroud)

如果您确定value键是唯一的,则在删除对象后,请breakfor循环内添加关键字if,以防止此类不必要的循环,

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


Jos*_*ora 5

您可以使用过滤器功能:

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";
});
Run Code Online (Sandbox Code Playgroud)