我正在尝试将我编写的这段代码转换为链接函数,因为我认为它看起来更干净。
let z =this.parkinglot.filter(val=>{
let propArr = Object.entries(val.spaces);
let pass = propArr.some(w=>{
let [key,value] = w;
return (value > 0);
})
return (pass===true);
})
我的数据结构是一个看起来像这样的对象数组(存储在名为this.parkinglot的数组中)
当我尝试将其重写为链接函数时,遇到了向函数提供正确输入的问题。由于我需要内部数据,因此需要使用地图,但是现在有了3层阵列。
然后我遇到了一个问题,我该如何将该数据正确过滤。
let t = this.parkinglot.map(val => Object.entries(val.spaces))
.some(w=>{
console.log('aa',w);
// let [key,value]=w
//return (value > 0);
})
//.filter(z=>z>1)
答案 0 :(得分:2)
最接近的链接是过滤器和一些过滤器。而且由于您只关心值,所以请使用Object.values而不是条目。
var data = [
{ level: 1, spaces : {a: 0, b:0, c: 0} },
{ level: 2, spaces : {a: 2, b:0, c: 0} },
{ level: 3, spaces : {a: 0, b:3, c: 0} },
{ level: 4, spaces : {a: 0, b:0, c: 10} },
{ level: 5, spaces : {a: 0, b:0, c: 0} },
]
const open = data.filter(level => Object.values(level.spaces).some(v => v))
console.log(open);
如果需要关卡,只需将map()添加到末尾
.filter(...).map(data => data.level)