js递归数组对象扁平化
时间: 2023-10-09 15:14:32 浏览: 109
你可以使用递归来扁平化一个包含数组和对象的结构。下面是一个使用JavaScript实现的例子:
```javascript
function flatten(arr) {
var flattened = [];
arr.forEach(function(item) {
if (Array.isArray(item)) {
flattened = flattened.concat(flatten(item));
} else if (typeof item === 'object') {
var keys = Object.keys(item);
keys.forEach(function(key) {
flattened = flattened.concat(flatten([item[key]]));
});
} else {
flattened.push(item);
}
});
return flattened;
}
// 示例
var arr = [1, [2, [3, 4]], {a: 5, b: {c: 6}}, 7];
console.log(flatten(arr)); // [1, 2, 3, 4, 5, 6, 7]
```
在这个例子中,`flatten` 函数接受一个数组作为参数,并将其递归地扁平化为一个一维数组。对于每个元素,如果它是一个数组,则递归地调用 `flatten` 函数并将结果连接到 `flattened` 数组中。如果它是一个对象,则将对象的值提取出来并递归调用 `flatten` 函数。如果既不是数组也不是对象,则将其直接添加到 `flattened` 数组中。最后返回 `flattened` 数组。
希望这个例子能帮助到你!如果有任何疑问,请随时提问。
阅读全文