问题描述
我正在使用reactjs
,下面有以下数据,我想遍历数组,然后if key === "oneline" or key === "twoline"
删除整个对象。
在此示例中,在删除了两个对象(转换)之后,根据上面的描述,它将仅返回数组内部具有0
和3
的对象。
const data = [
{0: {key: "zeroline",door: "zero"}},{1: {key: "oneline",door: "one"}},{2: {key: "twoline",door: "two"}},{3: {key: "threeline",door: "three"}},]
任何帮助都会很有帮助。
解决方法
您可以使用Array#filter
将其过滤掉。
const keywords = ['twoline','oneline'],data = [{0: {key: "zeroline",door: "zero"}},{1: {key: "oneline",door: "one"}},{2: {key: "twoline",door: "two"}},{3: {key: "threeline",door: "three"}}];
const res = data.filter((v,i) => keywords.indexOf(v[i].key) === -1);
console.log(res);
,
使用数组过滤器方法。 filter()方法创建一个数组,其中包含所有通过测试的数组元素。 数组过滤器的语法: array.filter(function(currentValue,index,arr),thisValue)
const data = [
{ 0: { key: "zeroline",door: "zero" } },{ 1: { key: "oneline",door: "one" } },{ 2: { key: "twoline",door: "two" } },{ 3: { key: "threeline",door: "three" } },];
let ret = data.filter((x,i) => x[i].key !== "oneline" && x[i].key !== "twoline");
console.log(ret);
,
一种实现方法是:
const result = Object.keys(data).reduce((filtered,key,index) => {
//Getting specific object of array
//Example for first: data[0]["0"] === {key: "zeroline",door "zero"}
const object = data[index][key];
//Check if object key is zeroline or twoline
if(object.key === "zeroline" || object.key === "twoline"){
//If it is we push object to array
filtered.push(object)
}
return filtered
},[])