2 回答
TA贡献1873条经验 获得超9个赞
您可以使用Array.prototype.filter()withArray.prototype.flat()方法获得更清晰的代码。首先使用方法获取所有值Object.values()。然后使用filter方法获取数组,最后使用flat方法获取所有子数组元素连接起来的新数组。
const input = {
value1: 10,
value2: 'abcd',
value3: [
{
v1: 100,
v2: 89,
},
{
v1: 454,
v2: 100,
},
],
value4: 'xyz',
value5: [
{
v6: 1,
v7: -8,
},
{
v1: 890,
v2: 10,
},
],
};
const ret = Object.values(input)
.filter((x) => Array.isArray(x))
.flat();
console.log(ret);
TA贡献1829条经验 获得超4个赞
我认为读起来可能会更清晰一些:
var input = {
"value1": 10,
"value2": "abcd",
"value3": [{
"v1": 100,
"v2": 89
},
{
"v1": 454,
"v2": 100
}
],
"value4": "xyz",
"value5": [{
"v6": 1,
"v7": -8
},
{
"v1": 890,
"v2": 10
}
]
};
let res = [];
for (let k in input) {
if (input.hasOwnProperty(k) && Array.isArray(input[k]))
input[k].forEach(x => res.push(x));
}
console.log(res);
添加回答
举报