开发者问题收集

如何在 javascript 中过滤数组

2020-04-24
46

这是我的两个值的数组。

let dataList = ["x","y","z","a","b"]
let data2= {
  x:{hide:true},
  y:{hide:true},
  z:{},
  a:{}
}

这是我的尝试代码:

let filters = dataList.filter(item=>Object.keys(data2).includes(item))

我想根据 data2 - hide:true 过滤 dataList。例如,如果 data2 中的值对象属性 hide:true ,则 key 将被删除。

预期输出:

["z","a"]
2个回答

我相信这很简单

let dataList = ["x","y","z","a","b"]
let data2= {
  x:{hide:true},
  y:{hide:true},
  z:{},
  a:{}
}

let filters = dataList.filter(item=> data2[item] && !data2[item].hide)

console.log(filters)
mplungjan
2020-04-24

您可以检查 data2 上是否存在该键,并检查 hide 是否为 true

dataList.filter(item => data2[item] && !data2[item].hide )

Radu Diță
2020-04-24