我可以为您进行翻译。以下是需要翻译的内容:
我有一个数组,其中包含对象数组。我需要提取具有对象的项目的属性值"id"。
数组示例:
let myArray = [
[ {id: "1"}, {id: "2"} ],
[],
[],
[ {id: "3"} ]
]
如何提取和创建像这样的数组:
["1", "2", "3"]
我尝试了这个:
。
tagIds = myArray.map(id =>{id})
我可以为您进行翻译。以下是需要翻译的内容:
我有一个数组,其中包含对象数组。我需要提取具有对象的项目的属性值"id"。
数组示例:
let myArray = [
[ {id: "1"}, {id: "2"} ],
[],
[],
[ {id: "3"} ]
]
["1", "2", "3"]
。
tagIds = myArray.map(id =>{id})
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);
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']
.concat()
创建单个对象的数组,然后使用.map()
提取id:
let myArray = [
[{id: "1"}, {id: "2"}], [], [], [{id:"3"}]
];
let result = [].concat(...myArray).map(({ id }) => id);
console.log(result);
文档:
Array.prototype.concat()
:合并多个数组或值,返回一个新的数组。Array.prototype.map()
:创建一个新数组,其中每个元素都是调用提供的函数后返回的结果。Spread Syntax
:将一个可迭代对象(如数组)展开为逗号分隔的值。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)
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}]]]
(不完全相同,只是举个例子)。