js 递归把对象数组的某个元素全部提取出来
时间: 2023-08-08 10:01:32 浏览: 129
使用递归的方式将对象数组中的某个元素全部提取出来,可以按照以下步骤进行操作:
首先,定义一个空数组来存储提取出来的元素。
然后,编写一个递归函数,函数接收两个参数,分别是待处理的对象数组和要提取的元素的键。
在递归函数中,首先判断传入的对象数组是否为空,若为空,则直接返回。
接下来,遍历对象数组的每个元素,判断当前元素是否为对象。若是对象,则递归调用当前函数,并将当前元素中的深层对象数组作为待处理的对象数组进行处理。若不是对象,则判断当前元素是否包含要提取的键。若包含,则将该元素的键值存入之前定义的空数组中。
最后,返回提取后的元素数组。
可以使用如下代码实现:
```javascript
function extractElement(arr, key) {
let extracted = [];
if (arr.length === 0) {
return extracted;
}
arr.forEach(item => {
if (typeof item === 'object') {
extracted = extracted.concat(extractElement(item, key));
} else if (item.hasOwnProperty(key)) {
extracted.push(item[key]);
}
});
return extracted;
}
// 示例用法
const data = [
{ name: 'Alice', age: 20 },
{ name: 'Bob', age: 30 },
{ name: 'Charlie', age: 25 }
];
const extractedNames = extractElement(data, 'name');
console.log(extractedNames); // ["Alice", "Bob", "Charlie"]
```
以上代码中的`extractElement`函数通过递归的方式,将对象数组中的每个元素提取出来,并存储在`extracted`数组中,最后返回提取后的元素数组。在示例中,通过调用`extractElement`函数,将`data`数组中的每个对象的"name"键对应的值提取出来,并存储在`extractedNames`数组中。
阅读全文