作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有如下数据:
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/
我是一名优秀的程序员,十分优秀!