如何改造这个lodash指定键值对
[ { '1491926400000': 222 }, { '1491926400000': 489 } ]
这样:
[ { date: '1491926400000', count: 222 }, { date: '1491926400000', count: 489 } ]
我与“降低”和“变换”使用lodash但与它的任何地方去尝试。
如何改造这个lodash指定键值对
[ { '1491926400000': 222 }, { '1491926400000': 489 } ]
这样:
[ { date: '1491926400000', count: 222 }, { date: '1491926400000', count: 489 } ]
我与“降低”和“变换”使用lodash但与它的任何地方去尝试。
可能的解决方法。
var arr = [{ '1491926400000': 222 }, { '1491926400000': 489 }],
res = arr.map(v => Object.assign({}, ...Object.keys(v).map(c => ({ date: c, count: v[c]}))));
console.log(res);
var oldArray = [ { '1491926400000': 222 }, { '1491926400000': 489 } ];
var newArray = [];
for(var i = 0; i < oldArray.length; i++){
var originObject = oldArray[i];
for(var key in originObject) {
var value = originObject[key];
var obj = {date: key, count: value};
newArray.push(obj);
}
}
确实变换使用Array#map
nope。它给了我{[date:'0',count:{'1491926400000':222}}, {date:'1',count:{'1491926400000':489}}] – user2994871
是的,我看到失败和编辑它。现在它起作用 – TypedSource
下面是使用lodash/fp
(咖喱功能/最后的数据)一个巧妙的解决办法:
const mapData = map(
flowRight(
zipObject(['date', 'count']), // { date: '1491926400000', count: 222 }
flatten, // ['1491926400000', 222]
toPairs // [ ['1491926400000', 222] ]
)
)
定期lodash
同一件事:
const mapData = (data) => map(data, (o) =>
zipObject(['date', 'count'], flatten(toPairs(o)))
)
使用情况要么:
mapData([ { '1491926400000': 222 }, { '1491926400000': 489 } ])
// [ { date: '1491926400000', count: 222 }, { date: '1491926400000', count: 489 } ]
结构与OP的期望结构不同。对初学者来说,这也可能有些压倒性,解释会有所帮助。 (另外,你可以使用扩展语法而不是'Object.assign') – Li357
@AndrewLi没有注意到。谢谢,修复。 –
请添加一些关于此代码为何/如何帮助OP的解释。这将有助于提供未来观众可以从中学习的答案。请参阅[这个元问题及其答案](http://meta.stackoverflow.com/q/256359/215552)了解更多信息。 –