javascript删除数组

时间:2018-02-06 06:39:47

标签: javascript arrays

我有一个如下所示的数组结构,我需要删除所有具有值vik的条目

[{"type" :"x", value: "vik"},
{"type" :"x", value: "jack"},
{"type" :"x", value: "jack"},
{"type" :"x", value: "jack"},
{"type" :"x", value: "vik"},
{"type" :"x", value: "vik"},
]

迭代使用for循环,拼接匹配值vik拧紧。什么是最好的方法。

我的代码是:

for(let obj of filterList){
        var i =0
        for(let lead of this.core.leadLocalList){
          console.log("comapring:" + lead.campaign)
          if(obj.value == lead.campaign){
            console.log("matched")
            this.core.leadLocalList.splice(i,1)
          }else
            i++
        }
    }

2 个答案:

答案 0 :(得分:4)

您可以使用数组过滤器方法来获得所需的结果。 Array Filter

var data = [{"type" :"x", value: "vik"},
{"type" :"x", value: "jack"},
{"type" :"x", value: "jack"},
{"type" :"x", value: "jack"},
{"type" :"x", value: "vik"},
{"type" :"x", value: "vik"},
];

const result = data.filter(item => item.value != "vik");
console.log(result);

答案 1 :(得分:2)

您可以使用lodash。这是一个简单的应用程序。

_.remove()如此:

_.remove( filterList, {
    value: 'vik'
} );

或者,使用ES6,您可以执行以下操作:

const filtered = filterList.filter( row => row.value !== 'vik' );

但是,如果应用程序变得复杂并且您需要更高级的东西,则可以利用谓词函数并根据该函数确定过滤:

_.remove( filterList, ( obj ) => {
    return ( obj.propertyOne !== SOME_CONSTANT ) && ( ... )
} );