在链中使用时,Underscore的“extend”的逆序

时间:2015-10-30 10:53:08

标签: javascript underscore.js

考虑:

var result = _.chain(foo)
  .stuff()
  .morestuff()
  .extend(extraKeysValues)    // <-- problem is here
  .value();

这样做是扩展链式数据集,使用extraKeysValues中的内容。这可以覆盖数据。

chain中使用时,我想要相反的行为 - 我想将链数据添加到extraKeysValues,因此我不会覆盖任何数据。

那么如何在链内使用时有效地发现_.extend(destination, *sources)的顺序?我意识到这将是一个多步骤的过程,但我不想打破链条。

1 个答案:

答案 0 :(得分:1)

我认为defaults(object, *defaults)方法可以满足您的需求。

  

使用以下默认对象列表中的第一个值填充对象中的未定义属性。

var result = _.chain(foo)
  .stuff()
  .morestuff()
  .defaults(extraKeysValues)
  .value();

这样,result数据中的数据不会被extraKeysValues数据覆盖。