一个数组中有多个对象,每个对象中包含子级数组,把每个对象的子级数组存到一个新数组中
let newArr = [];
arr.forEach((element) => {
if (typeof element === 'object') { // [] => object
for (const attr in element) {
const value = element[attr];
if (Array.isArray(value)) { // [] => object => []
newArr.push(value);
}
}
}
});
console.log(newArr);
var array = [{
"name": "lishi",
"friends": [{
"name": "lishi1",
"friends": [{
"name": "lishi2",
"friends": [{
"name": "lishi3",
"friends": []
}]
},
{
"name": "lishi4",
"friends": []
}]
},
{
"name": "lishi5",
"friends": []
}]
},
{
"name": "wanger",
"friends": [{
"name": "wangwu"
}]
},
{
"name": "zhangsan",
"friends": []
}];
题主没有贴出数据具体是什么结构,假设是上面的结构(一个数组中有多个对象,每个对象中包含子级数组),拿出所有的friends数组中的对象,递归处理下就可以了。
var result = [];
function selectAllFriends(arr) {
for (var i = 0; i < arr.length; i++) {
if (!arr[i].friends || arr[i].friends.length < 1) {
continue;
}
selectAllFriends(arr[i].friends);
result = result.concat(arr[i].friends);
}
}
selectAllFriends(array);
for (var i = 0; i < result.length; i++) {
console.log(result[i]["name"]);
}
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决