【发布时间】:2019-07-05 13:47:35
【问题描述】:
我面临一个简单的问题,就是用嵌套的对象来展平简单的对象。
尝试解决 SO,但它会引发错误:
const newWeather = Object.assign({}, ...function _flatten(o) { return [].concat(...Object.keys(o).map(k => typeof o[k] === 'object' ? _flatten(o[k]) : ({[k]: o[k]})))}({id: 1}))
// also tried these ones:
console.log(Object.keys(weatherDetails).reduce((a, b, c) => {
return Object.assign(a, {
a: b
})
}, {}));
// another one
let newWeather = Object.assign({}, (function() {
var obj = {}
for (var i = 0; i < Object.keys(weatherDetails).length; i++) {
console.log(i, Object.keys(weatherDetails))
obj[Object.keys(weatherDetails)] = weatherDetails[Object.keys(weatherDetails)]
}
return obj
})())
这是我需要展平的对象,所以我们需要把它转过来:
{
temperature: null,
humidity: null,
pressure: null,
windspeed: null,
pollution: {
PM1: 1,
PM10: 2,
PM25: 3
}
}
进入这个:
{
temperature: null,
humidity: null,
pressure: null,
windspeed: null,
PM1: 1,
PM10: 2,
PM25: 3
}
【问题讨论】:
-
在 lodash 中有一个简单的方法。也许你可以试试。
-
能否还包括错误详细信息以及错误发生在哪一行?
-
@jlafay 没有错误,结果不是我所期望的,所以我做错了。哦,你的意思是 SO 那个,React 说:TypeError: can't convert null to object
-
能否请您链接您获得 sn-ps 的答案并添加您得到的错误?
-
Object.assign({}, weather, { pollution: undefined }, weather.pollution)
标签: javascript arrays object reduce higher-order-functions