[英]lodash assign key value pair
How do transform this 如何改变这一点
[ { '1491926400000': 222 }, { '1491926400000': 489 } ]
to this: 对此:
[ { date: '1491926400000', count: 222 }, { date: '1491926400000', count: 489 } ]
I have tried with 'reduce' and 'transform' using lodash but not going anywhere with it. 我已经尝试过使用lodash进行'reduce'和'transform'但不会随身携带。
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);
}
}
does the transform 转变
Possible solution using Array#map
. 使用
Array#map
可能的解决方案。
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);
Here's a neat solution using lodash/fp
(curried functions / data last): 这是一个使用
lodash/fp
( lodash/fp
functions / data last)的简洁解决方案:
const mapData = map(
flowRight(
zipObject(['date', 'count']), // { date: '1491926400000', count: 222 }
flatten, // ['1491926400000', 222]
toPairs // [ ['1491926400000', 222] ]
)
)
Same thing in regular lodash
: 常规
lodash
:
const mapData = (data) => map(data, (o) =>
zipObject(['date', 'count'], flatten(toPairs(o)))
)
Usage for either: 用于:
mapData([ { '1491926400000': 222 }, { '1491926400000': 489 } ])
// [ { date: '1491926400000', count: 222 }, { date: '1491926400000', count: 489 } ]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.