【问题标题】:How to check if a value exists in json array? If match is found, delete the key value pair如何检查json数组中是否存在值?如果找到匹配,则删除键值对
【发布时间】:2018-01-25 17:24:36
【问题描述】:

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

[{"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 是我的共享点列表中的一列。

【问题讨论】:

  • 您想在 js 中进行 json decode 之前或不进行 json decode 的情况下删除它吗??
  • 请注意,这不是 JSON。我为你更改了标题、描述和标签。
  • 但是在许多 json 验证器中,它显示为有效的 json。它真的不是 json 而是对象数组吗?

标签: javascript jquery ajax sharepoint-2013


【解决方案1】:

您可以使用过滤功能:

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";
});

【讨论】:

    【解决方案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 内的for 循环内添加一个break 关键字,以防止此类不必要的循环,

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

    【讨论】:

    • 你看不到数组项并没有真正被删除吗?你仍然有 null 在那里,这不是 OP 想要的。
    • @PeterMader 你是对的。感谢改进。在这种情况下我们可以使用拼接。
    猜你喜欢
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多