在lodash链中停止隐式提交

时间:2015-08-12 16:27:50

标签: javascript lodash

直到今天,我认为lodash chain"崩溃"通过明确调用.value()。但是,我在下面的代码段中证明了我的错误



(function(undefined) {
  var a = { a: 'a', b: 'b' };
  var chain = _(a);
  chain.pick('b');
  
  // > { a: 'a', b: 'b' }
  console.log(chain.value());

  chain = _(a).pick('b');
  
  // > { b: 'b' }
  console.log(chain.value());
})();

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.js"></script>
&#13;
&#13;
&#13;

有没有办法关闭隐式链提交?

2 个答案:

答案 0 :(得分:1)

不,你不能。这就是链条如何运作。

但你可以plant(克隆)一个链。

From the docs:

var array = [1, 2];
var wrapped = _(array).map(function(value) {
    return Math.pow(value, 2);
});
var other = [3, 4];
var otherWrapped = wrapped.plant(other);
otherWrapped.value(); // → [9, 16]
wrapped.value(); // → [1, 4]

答案 1 :(得分:1)

如果@HNeiva回答不符合您的原因,您只需使用最新的包装器覆盖旧链:

(function(undefined) {
  var a = { a: 'a', b: 'b' };
  var chain = _(a);
  chain = chain.pick('b');
  
  // > { b: 'b' }
  console.log(chain.value());
})();
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.js"></script>