gpt4 book ai didi

javascript - 一个用于压平嵌套对象的衬垫

转载 作者:可可西里 更新时间:2023-11-01 02:28:33 26 4
gpt4 key购买 nike

我需要展平嵌套对象。需要一个类轮。不确定此过程的正确术语是什么。我可以使用纯 Javascript 或库,我特别喜欢下划线。

我有...

{
a:2,
b: {
c:3
}
}

我想要...

{
a:2,
c:3
}

我试过...

var obj = {"fred":2,"jill":4,"obby":{"john":5}};
var resultObj = _.pick(obj, "fred")
alert(JSON.stringify(resultObj));

哪个有效,但我也需要这个才能工作...

var obj = {"fred":2,"jill":4,"obby":{"john":5}};
var resultObj = _.pick(obj, "john")
alert(JSON.stringify(resultObj));

最佳答案

给你:

Object.assign({}, ...function _flatten(o) { return [].concat(...Object.keys(o).map(k => typeof o[k] === 'object' ? _flatten(o[k]) : ({[k]: o[k]})))}(yourObject))

总结:递归地创建一个单属性对象数组,然后将它们与Object.assign 组合起来。

这使用了 ES6 特性,包括 Object.assign 或扩展运算符,但重写应该很容易而不需要它们。

对于那些不在乎单行的疯狂,更希望能够真正阅读它的人(取决于您对可读性的定义):

Object.assign(
{},
...function _flatten(o) {
return [].concat(...Object.keys(o)
.map(k =>
typeof o[k] === 'object' ?
_flatten(o[k]) :
({[k]: o[k]})
)
);
}(yourObject)
)

关于javascript - 一个用于压平嵌套对象的衬垫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33036487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com