es6 数组对象扁平化

发布于 2022-09-30 23:09:43 字数 288 浏览 25 评论 0

有对象如下

var object = {
            a: 1,
            b: 2,
            c: {
                aa: 11,
                bb: 22
            }
        }

怎么变化后能输出

var object = {
        a: 1,
        b: 2,
        aa: 11,
        bb: 22
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

倦话 2022-10-07 23:09:43

image.png

贩梦商人 2022-10-07 23:09:43
var object = {
    a: 1,
    b: 2,
    c: {
        aa: 11,
        bb: 22
    }
};
const objFlat = (obj, res = {}) => {
    Object.keys(obj).map(k => {
        obj[k].constructor === Object ? objFlat(obj[k], res) : res[k] = obj[k];
    });
    return res;
};
console.log(objFlat(object));
影子的影子 2022-10-07 23:09:43
var object = {
            a: 1,
            b: 2,
            c: {
                aa: 11,
                bb: 22
            }
        }

let isType = (obj,type)=>Object.prototype.toString.call(obj) === `[object ${type}]`;
let treeToArr=(obj)=>Object.entries(obj).reduce((acc,[key,val])=>Object.assign(acc ,isType(val, 'Object') ? treeToArr(val) : Object.fromEntries([[key,val]])),{});
treeToArr(object);
{a: 1, b: 2, aa: 11, bb: 22}
魂归处 2022-10-07 23:09:43
const object = {
    a: 1,
    b: 2,
    c: {
        aa: 11,
        bb: 22
    },
    d: null,
    e: [1, 2, 3]
};

function flatObject(source, target = {}) {
    Object.entries(source)
        .forEach(([k, v]) => {
            if (v && typeof v === "object" && !Array.isArray(v)) {
                flatObject(v, target);
            } else {
                target[k] = v;
            }
        });
    return target;
}

const r = flatObject(object);
console.log(r);
// { a: 1, b: 2, aa: 11, bb: 22, d: null, e: [ 1, 2, 3 ] }
卖梦商人 2022-10-07 23:09:43

使用一个递归即可,关键就是判断当前的 key 是不是对象。

var object = {
  a: 1,
  b: 2,
  c: {
    aa: 11,
    bb: 22
  }
}

const flattenObject = (object) => 
  Object.keys(object).reduce((target, key) => ({
    ...target,
    ...(typeof object[key] === 'object' ? flattenObject(object[key]) : { [key]: object[key]})
  }), {});

console.log(flattenObject(object));

https://codepen.io/pantao/pen...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文