js 多层嵌套的数组,找到最后一层数据
时间: 2023-06-24 17:07:12 浏览: 163
可以通过递归的方式遍历数组,直到找到最后一层数据。具体的实现代码如下:
```javascript
function findLastLevel(arr) {
let result = [];
arr.forEach(item => {
if (Array.isArray(item)) {
result = result.concat(findLastLevel(item));
} else {
result.push(item);
}
});
return result;
}
```
这个函数接受一个多层嵌套的数组作为参数,返回该数组中最后一层数据组成的数组。对于每个元素,如果它是数组,则递归调用当前函数;否则将该元素加入结果数组中。最终返回得到的结果数组即可。
相关问题
js 多层嵌套的数组,找到最后两层数据
可以使用递归函数来遍历多层嵌套的数组,直到找到最后两层数据为止。以下是一个简单的示例代码:
```javascript
function findLastTwoLayers(arr) {
let result = [];
arr.forEach(element => {
if (Array.isArray(element)) {
// 如果当前元素是数组,则递归调用函数
result.push(...findLastTwoLayers(element));
} else {
// 如果当前元素不是数组,则将其添加到结果数组中
result.push(element);
}
});
return result;
}
// 示例用法
const nestedArray = [1, [2, [3, 4]], 5, [6]];
const lastTwoLayers = findLastTwoLayers(nestedArray);
console.log(lastTwoLayers); // 输出 [3, 4, 6]
```
该函数接受一个多层嵌套的数组作为参数,并返回最后两层数据组成的新数组。函数使用 `Array.isArray()` 方法来判断当前元素是否为数组,如果是则递归调用函数,否则将其添加到结果数组中。最终返回的结果数组就是最后两层数据组成的新数组。
js嵌套多层数组对象修改每一层的key值
要修改多层嵌套的数组对象中每一层的 key 值,可以使用递归函数来实现。以下是一个示例代码:
```javascript
function modifyKeys(obj, oldKey, newKey) {
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
if (key === oldKey) {
obj[newKey] = obj[key];
delete obj[key];
key = newKey;
}
if (typeof obj[key] === 'object' && obj[key] !== null) {
modifyKeys(obj[key], oldKey, newKey);
}
}
}
return obj;
}
// 示例
var obj = {
a: {
b: [
{
c: 1,
d: 2
},
{
c: 3,
d: 4
}
]
},
e: {
f: 5,
g: [
{
h: 6
},
{
h: 7
}
]
}
};
obj = modifyKeys(obj, 'c', 'newC');
console.log(obj);
// 输出:{ a: { b: [ { newC: 1, d: 2 }, { newC: 3, d: 4 } ] }, e: { f: 5, g: [ { h: 6 }, { h: 7 } ] } }
```
上述代码中的 `modifyKeys` 函数与之前的示例函数类似,不同之处在于它会递归遍历多层嵌套的数组对象。函数首先遍历对象的每一个属性,如果当前属性的 key 等于旧的 key,则将此属性的 key 修改为新的 key,并更新 key 变量的值;然后判断当前属性是否为对象或数组,如果是,则递归调用 `modifyKeys` 函数,继续遍历子对象或子数组。最后返回修改后的对象。
阅读全文