如何为 Javascript 中的复杂对象数组链接映射和过滤方法?
How to chain map and filter methods for a complex array of objects in Javascript?
我有一个数组如下:
var arr = [
{
subArray1:[
{
subArray2:[
{
value: 1
},
{
value: 0
}
]
},
{
subArray2:[
{
value: 1
},
{
value: 0
}
]
}
]
}
];
我想过滤掉 subArray2 中包含值 1 和 return 整个数组的所有对象。
预期输出如下:
newArr= [
{
subArray1:[
{
subArray2:[
{
value: 1
}
]
},
{
subArray2:[
{
value: 1
}
]
}
]
}
]
我无法以获得上述所需输出的方式链接 map 和 filter 方法。
请帮助我实现这一目标。
您需要映射每个 arr
项和每个 arr.subArray1
项,然后过滤 subArray2
:
var arr = [
{
subArray1:[
{
subArray2:[
{
value: 1
},
{
value: 0
}
]
},
{
subArray2:[
{
value: 1
},
{
value: 0
}
]
}
]
}
];
console.log(
arr.map(({...el}) => {
el.subArray1 = el.subArray1.map(({...el1}) => {
el1.subArray2 = el1.subArray2.filter(({value}) => value !== 0);
return el1;
});
return el;
})
)
假设只有那些嵌套数组,您可以将函数 reduce
与函数 filter
.
一起使用
const arr = [ { subArray1:[ { subArray2:[ { value: 1 }, { value: 0 } ] }, { subArray2:[ { value: 1 }, { value: 0 } ] } ] }],
result = arr.reduce((a, {subArray1}) => {
a.push({
subArray1: subArray1.reduce((a, {subArray2}) => {
a.push({subArray2: subArray2.filter(({value}) => value === 1)});
return a;
}, [])
});
return a;
}, []);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
我有一个数组如下:
var arr = [
{
subArray1:[
{
subArray2:[
{
value: 1
},
{
value: 0
}
]
},
{
subArray2:[
{
value: 1
},
{
value: 0
}
]
}
]
}
];
我想过滤掉 subArray2 中包含值 1 和 return 整个数组的所有对象。 预期输出如下:
newArr= [
{
subArray1:[
{
subArray2:[
{
value: 1
}
]
},
{
subArray2:[
{
value: 1
}
]
}
]
}
]
我无法以获得上述所需输出的方式链接 map 和 filter 方法。 请帮助我实现这一目标。
您需要映射每个 arr
项和每个 arr.subArray1
项,然后过滤 subArray2
:
var arr = [
{
subArray1:[
{
subArray2:[
{
value: 1
},
{
value: 0
}
]
},
{
subArray2:[
{
value: 1
},
{
value: 0
}
]
}
]
}
];
console.log(
arr.map(({...el}) => {
el.subArray1 = el.subArray1.map(({...el1}) => {
el1.subArray2 = el1.subArray2.filter(({value}) => value !== 0);
return el1;
});
return el;
})
)
假设只有那些嵌套数组,您可以将函数 reduce
与函数 filter
.
const arr = [ { subArray1:[ { subArray2:[ { value: 1 }, { value: 0 } ] }, { subArray2:[ { value: 1 }, { value: 0 } ] } ] }],
result = arr.reduce((a, {subArray1}) => {
a.push({
subArray1: subArray1.reduce((a, {subArray2}) => {
a.push({subArray2: subArray2.filter(({value}) => value === 1)});
return a;
}, [])
});
return a;
}, []);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }