我有一个名为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是我的共享点列表中的一列。
答案 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";
});