数组:下面几种方法都用文章下面arr这个数组
主要是通过flat()函数来实现,对于非树形数组,比如多层嵌套,flat(params)可以通过调整参数直接扁平化层一维,对于树形数组通过一层层取
数组
let arr = [
{
name: " John ",
age: 20,
address: {
city: " New York ",
state: " NY ",
},
jobs: [
{
java: "20k",
javascript: "18k",
property:[
{
num:12,
news:'aa'
},
{
num:13,
news:'bb'
}
]
},
{
java: "21k",
javascript: "17k",
property:[
{
num:1211,
news:'cc'
},
{
num:1323,
news:'dd'
}
],
},
],
},
{
name: " Jane ",
age: 25,
address: {
city: " Los Angeles ",
state: " CA ",
},
jobs: [
{
java: "10k",
javascript: "8k",
property:[
{
num:102,
news:'ee'
},
{
num:1003,
news:'ff'
}
]
},
{
java: "1k",
javascript: "7k",
property:[
{
num:111,
news:'gg'
},
{
num:1113,
news:'hh'
}
]
},
],
},
];
一层数组
let result = arr.map((item) => {
return {
name: item.name,
state: item.address.state,
};
});
console.log(result,'测试取值=============');
两层数组
先用flat()展平然后再遍历 ps:数组的层级不单一比较复杂的情况下,可以借助参数 Infinity ,就可以将所有层级的数组展平
let results = arr.map((item) => item.jobs).flat();
let newArray = results.map((items) => ({ java: items.javascript }));
console.log(newArray,'========newArray');
三层数组
1.展平再遍历
let flatresult = arr.map((item) => item.jobs).flat();
let result = flatresult.map((item) => item.property).flat();
let newArray3 = result.map((items) =>({num:items.num}))
console.log(newArray3,'二次展平再遍历========');
2.直接遍历
arr.forEach((item) => {
item.jobs.forEach((item2) => {
item2.property.forEach((item3) => {
newArray2.push({
num: item3.num,
});
});
});
});
console.log(newArray2,'三层数组=================');