2017-08-17 61 views
-3

我有一个SharePoint列名为AllLinks在即时通讯存储阵列为:如何检查json数组中是否存在一个值?如果发现匹配,删除键值对

[{"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是我的SharePoint列表中的列。

+0

? –

+1

请注意,这是JSON。我更改了标题,说明和标签。 –

+0

但是在许多json验证器中它是作为有效的json出现的。它真的不是json和对象数组吗? –

回答

2

您可以在这里这样一个简单的方法做到这一点:

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关键是独特的,则for循环内内if后添加break关键字为了防止不必要的循环,请删除对象,

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

难道你不能看到数组项目没有真正删除吗?你仍然有'null',这不是OP想要的。 – PeterMader

+0

@PeterMader你是对的。感谢您的改进。在这种情况下我们可以使用拼接。 –

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"; 
}); 
你想之前或不JS JSON解码以移除它
相关问题