js不限层级数组转化为复杂的嵌套对象/不限层级复杂的对象嵌套转化成为数组

68 阅读1分钟

js不限层级数组转化为复杂的嵌套对象

将数组 [{'a': 1}, {'a': 2}, {'a': 3}] 转换成对象 {a: 1, info: {a: 2, info: {a: 3}}} 的形式,可以通过递归函数来实现:

数组格式[{a:1},{a:2},{a:3}],要拼接成这样的obj={a:1,info:{a:2,info:{a:3}}}

function arrayToObject(arr) {
    if (arr.length === 0) {
        return null; // 或者根据需求返回其他值,比如 {}
    }
    let obj = arr.shift(); // 移除数组的第一个元素并返回该元素
    if (arr.length > 0) {
        obj.info = arrayToObject(arr); // 递归处理剩余的数组元素
    }
    return obj;
}
let arr = [{'a': 1}, {'a': 2}, {'a': 3}];
let result = arrayToObject(arr);
console.log(result);

js不限层级复杂的对象嵌套转化成为数组

一个嵌套对象 {a: 1, info: {a: 2, info: {a: 3}}} 转换为数组 [{'a': 1}, {'a': 2}, {'a': 3}],同样可以使用递归函数来遍历对象并将每一层的 a 属性值收集到数组中:

对象格式{a:1,info:{a:2,info:{a:3}}},要拼接成这样的ary=[{a:1},{a:2},{a:3}]

function objectToArray(obj, arr = []) {
    if (obj !== null && typeof obj === 'object') {
        arr.push({ a: obj.a }); // 添加当前对象的'a'属性到数组
        if ('info' in obj && typeof obj.info === 'object') {
            return objectToArray(obj.info, arr); // 递归处理info属性中的对象
        }
    }
    return arr;
}
let obj = { a: 1, info: { a: 2, info: { a: 3 } } };
let result = objectToArray(obj);
console.log(result);