考虑:
var result = _.chain(foo)
.stuff()
.morestuff()
.extend(extraKeysValues) // <-- problem is here
.value();
这样做是扩展链式数据集,使用extraKeysValues
中的内容。这可以覆盖数据。
在chain
中使用时,我想要相反的行为 - 我想将链数据添加到extraKeysValues
,因此我不会覆盖任何数据。
那么如何在链内使用时有效地发现_.extend(destination, *sources)
的顺序?我意识到这将是一个多步骤的过程,但我不想打破链条。
答案 0 :(得分:1)
我认为defaults(object, *defaults)
方法可以满足您的需求。
使用以下默认对象列表中的第一个值填充对象中的未定义属性。
var result = _.chain(foo)
.stuff()
.morestuff()
.defaults(extraKeysValues)
.value();
这样,result
数据中的数据不会被extraKeysValues
数据覆盖。