Javascript 如何提取嵌套数组中数组的属性
我有一个数组,其中包含对象数组。我需要提取具有对象的项的属性值“id” 阵列示例:Javascript 如何提取嵌套数组中数组的属性,javascript,arrays,angular,Javascript,Arrays,Angular,我有一个数组,其中包含对象数组。我需要提取具有对象的项的属性值“id” 阵列示例: let myArray = [ [ {id: "1"}, {id: "2"} ], [], [], [ {id: "3"} ] ] 如何提取和创建这样的数组: ["1", "2", "3"] 我试过这个: tagIds = myArray.map(id =>{id}) 您可以使用reduce展平数组,并使用map循环遍历数组并返回id 让myArray=[ [{id:
let myArray = [
[ {id: "1"}, {id: "2"} ],
[],
[],
[ {id: "3"} ]
]
如何提取和创建这样的数组:
["1", "2", "3"]
我试过这个:
tagIds = myArray.map(id =>{id})
您可以使用
reduce
展平数组,并使用map
循环遍历数组并返回id
让myArray=[
[{id:“1”},{id:“2”}],
[],
[],
[{id:“3”}],
];
让result=myArray.reduce((c,v)=>c.concat(v),[]).map(o=>o.id);
控制台日志(结果)
您可以使用.concat()
创建单个对象的数组,然后使用.map()
提取ID:
让myArray=[
[{id:“1”},{id:“2”}],[],[],[{id:“3”}]
];
让result=[].concat(…myArray).map({id})=>id);
控制台日志(结果)代码>使用简单嵌套循环的另一种方法:
let myArray = [
[ {id: "1"}, {id: "2"} ],
[],
[],
[ {id: "3"} ]
]
//----------------------------------
let newArray=[];
for (let i=0;i<myArray.length;i++){
for (let j=0;j<myArray[i].length;j++){
newArray.push(myArray[i][j].id);
}
}
console.log(newArray); //outputs ['1','2','3']
让myArray=[
[{id:“1”},{id:“2”}],
[],
[],
[{id:“3”}]
]
//----------------------------------
设newArray=[];
对于(设i=0;i),您还可以编写一个递归函数,使其能够处理任意数量的数组,例如:
function extractIds(arr) {
return arr.reduce((a, item) => {
if (Array.isArray(item)) {
return [
...a,
...extractIds(item)
];
}
return [
...a,
item.id
];
}, [])
}
extractIds([{id: 1}, [{id: 2}], {id: 3}, [{id: 4}, [{id: 5}, [{id: 6}]]]])
extractIds
的返回将是[1,2,3,4,5,6]
请注意,如果没有递归部分,您将得到如下结果:[1,2,3,{id:4},[{id:5}]]]
(与此不完全相同,但仅作为示例)。以下是我的解决方案:
let a = myArray.flat(100) // you can put (3) or (10) in here, the higher the flatter the array
let b = a.map(
function(value){
return parseInt(value.id)
}
)
console.log(b)
到目前为止,您尝试了什么?我想知道是否存在同一id的多个事件,那么要么必须考虑一次,要么不考虑其发生?