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);
添加回答
舉報