Javascript 在下划线/lodash链中插入数组

Javascript 在下划线/lodash链中插入数组,javascript,underscore.js,lodash,Javascript,Underscore.js,Lodash,我试图在lodash/下划线链中创建一个数组,但它不起作用 例如: var foo = _.chain(currentValue) // let's say "1,2,4" .split(',') // now it is [1,2,4] .max() // now it is 4 .tap(function(maxValue) {

我试图在lodash/下划线链中创建一个数组,但它不起作用

例如:

  var foo = _.chain(currentValue) // let's say "1,2,4"
                .split(',')       // now it is [1,2,4]
                .max()            // now it is 4
                .tap(function(maxValue) {
                  return _(Array(maxValue)).fill(false);
                }) // should be now [false, false, false, false] but doesn't work
                .value();

我缺少的是什么?

这里是针对这个问题的纯js解决方案

var str=“1,2,4”;
var result=Array(Math.max.apply(null,str.split(',')).fill(false);

log(result)
这是一个纯js解决方案

var str=“1,2,4”;
var result=Array(Math.max.apply(null,str.split(',')).fill(false);
console.log(result)
您可以使用,和
\uuu.fill()

var currentValue=“1,2,4”;
var foo=\ u0.chain(currentValue)//假设为“1,2,4”
.split(“,”)//现在是[“1”、“2”、“4”]
.max()//现在是“4”
.times()/[未定义,未定义,未定义,未定义]
.填写(假)/[假,假,假,假]
.value();
console.log(foo)
您可以使用,和
\uuu.fill()

var currentValue=“1,2,4”;
var foo=\ u0.chain(currentValue)//假设为“1,2,4”
.split(“,”)//现在是[“1”、“2”、“4”]
.max()//现在是“4”
.times()/[未定义,未定义,未定义,未定义]
.填写(假)/[假,假,假,假]
.value();
console.log(foo)
1)
.tap
是变异参数,最好使用
.thru

_.chain('1,2,4')
    .split(',')      
    .max()           
    .times(_.constant(false))
    .value();
2) 要获得链接的结果,必须在链的末尾调用
.value()

3) 所以我的建议

_.chain('1,2,4')
    .split(',')      
    .max()           
    .thru(function(maxValue) {
        return _.chain(maxValue).times(_.constant(false)).value();
    })
    .value();
如果真的不需要
,点击

_.chain('1,2,4')
    .split(',')      
    .max()           
    .times(_.constant(false))
    .value();
1)
\uu.tap
是变异参数,最好使用
\uu.thru

_.chain('1,2,4')
    .split(',')      
    .max()           
    .times(_.constant(false))
    .value();
2) 要获得链接的结果,必须在链的末尾调用
.value()

3) 所以我的建议

_.chain('1,2,4')
    .split(',')      
    .max()           
    .thru(function(maxValue) {
        return _.chain(maxValue).times(_.constant(false)).value();
    })
    .value();
如果真的不需要
,点击

_.chain('1,2,4')
    .split(',')      
    .max()           
    .times(_.constant(false))
    .value();

虽然我从不使用lodash或其他任何东西,但我会尝试使用
Array(maxValue)
而不是
(Array(maxValue))
。我认为这只是给了你改变价值的机会。由于字符串是不可变的,这可能不是
tap
的用例。是的,我误解了这里的tap,尽管我从来没有使用lodash或其他任何东西,但我会尝试
Array(maxValue)
而不是
(Array(maxValue))
。我认为
tap
对您的返回语句没有任何作用。我认为这只是给了你改变价值的机会。因为字符串是不可变的,所以这可能不是
tap
的用例。是的,我误解了tap,它在纯Javascript中的可读性不如Lodash版本。此外,一些函数可能会错过Javascript,即使本例并非如此。与Lodash版本相比,纯Javascript版本的可读性较差。此外,一些函数可能会错过Javascript,即使示例中不是这样。