【发布时间】:2014-11-11 01:32:56
【问题描述】:
我正在转换这个对象数组:
[
{
first: {
blah: 1,
baz: 2
}
},
{
second: {
foo: 1,
bar: 2
}
}
]
对于这个更简单的平面对象:
{
first: {
blah: 1,
baz: 2
},
second: {
foo: 1,
bar: 2
}
}
我发现使用 Underscore/LoDash 的两种最简单的方法是:
// Using reduce and extend
_.reduce(myArray, _.extend)
// Using assign and apply
_.assign.apply(_, myArray);
完整的代码记录在 JSBin 中:http://jsbin.com/kovuhu/1/edit?js,console
我已经阅读了很多关于 apply/bind/call/assign/reduce/extend 的文档……但我就是无法理解幕后实际发生的事情。
谁能帮我了解一下这两种单线表演魔术的秘密?
【问题讨论】:
-
他们执行黑魔法,因为他们变异你的第一个对象。应该是
_.reduce(myArray, _.extend, {})(这对extend(extend({}, myArray[0]), myArray[1])很友好)
标签: javascript underscore.js lodash