Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何提取嵌套数组中数组的属性_Javascript_Arrays_Angular - Fatal编程技术网

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

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:

我有一个数组,其中包含对象数组。我需要提取具有对象的项的属性值“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的多个事件,那么要么必须考虑一次,要么不考虑其发生?