如何在嵌套数组中提取数组的属性

时间:2018-04-16 15:04:18

标签: javascript arrays angular

我有一个包含对象数组的数组。我需要提取具有对象的项的属性值“id”。

数组示例:

let myArray = [
    [ {id: "1"}, {id: "2"} ],
    [],
    [],
    [ {id: "3"} ]
]

如何提取和创建这样的数组:

["1", "2", "3"]

我试过了:

tagIds = myArray.map(id =>{id})

5 个答案:

答案 0 :(得分:7)

您可以使用reduce展平数组并使用map循环访问数组并返回ID。

let myArray = [
  [{id: "1"}, {id: "2"}],
  [],
  [],
  [{id: "3"}],
];

let result = myArray.reduce((c, v) => c.concat(v), []).map(o => o.id);

console.log(result);

答案 1 :(得分:2)

您可以使用.concat()创建单个对象数组,然后使用.map()提取ID:



let myArray = [
  [{id: "1"}, {id: "2"}], [], [], [{id:"3"}]
];

let result = [].concat(...myArray).map(({ id }) => id);

console.log(result);




<强>文档:

答案 2 :(得分:1)

使用简单嵌套循环的另一种方法:

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']

答案 3 :(得分:1)

这是我的解决方案:

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)

答案 4 :(得分:0)

您还可以编写递归函数,使其适用于任意数量的数组,例如:

extractIds

[1, 2, 3, 4, 5, 6]的回复将为[1, 2, [3, {id: 4}, [{id: 5}]]]

请注意,如果没有递归部分,您最终会得到类似这样的内容:self.pos = pygame.mouse.get_pos()(不完全是这样,但仅作为示例)。