考虑:

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


这是用extraKeysValues中的内容扩展了链接的数据集。这样会覆盖数据。

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

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

最佳答案

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


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


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


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

关于javascript - 在链中使用下划线的`extend`的相反顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33434253/

10-11 15:04