gpt4 book ai didi

javascript - 如何在 JS 中展平数组?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:01:02 26 4
gpt4 key购买 nike

我有如下数据:

const data = [{
ratings: [ { rating: 5 } ],
counts: [ { count: 100 } ],
}];

从某种意义上说,我想将其展平,即我想摆脱数组,只拥有对象,最终结果是:

const data = {
ratings: { rating: 5 },
counts: { count: 100 },
};

我试图做这样的事情,但这是错误的,我相信我有点过于复杂了。

const flatten = data => {
return data.reduce((r, { ...children }) => {
Object.assign(children, r);
if (children) Object.assign(flatten(...Object.values(children)), r);
return r;
}, {})
}

有什么想法吗?

最佳答案

您可以使用 reduce 方法创建递归函数,将所有数组转换为对象,假设这些数组中只有对象。

const data = [{ratings: [ { rating: 5 } ],counts: [ { count: 100 } ]}];

function flatten(arr) {
return arr.reduce((r, e) => {
const obj = Object.assign({}, e);
for (let p in obj) {
if (Array.isArray(obj[p])) {
obj[p] = flatten(obj[p])
}
}
return Object.assign(r, obj)
}, {})
}

console.log(flatten(data))

关于javascript - 如何在 JS 中展平数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53571221/

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