Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用下划线.js可以减少返回数组的次数吗?_Javascript_Mapreduce_Underscore.js - Fatal编程技术网

Javascript 使用下划线.js可以减少返回数组的次数吗?

Javascript 使用下划线.js可以减少返回数组的次数吗?,javascript,mapreduce,underscore.js,Javascript,Mapreduce,Underscore.js,我试图使用reduce返回这样的数组: var myArray = [1,2,3]; _.reduce(myArray, function (seed, item) { return seed.push(item);}, []); 我希望它将生成一个与myArray类似的数组。对于第一项,seed是一个数组。然后对于第二项,seed是一个数字。这会导致错误,并且永远无法到达第三项 这里发生了什么?实际上,seed.push()不会返回修改后的seed。执行以下操作,这是正确的: _.reduc

我试图使用reduce返回这样的数组:

var myArray = [1,2,3];
_.reduce(myArray, function (seed, item) { return seed.push(item);}, []);
我希望它将生成一个与myArray类似的数组。对于第一项,seed是一个数组。然后对于第二项,seed是一个数字。这会导致错误,并且永远无法到达第三项

这里发生了什么?

实际上,
seed.push()
不会返回修改后的
seed
。执行以下操作,这是正确的:

_.reduce(myArray, function (seed, item) { seed.push(item); return seed; }, []);

为什么要这样使用
reduce
?如果你需要克隆一个数组,你最好把它切分成
slice
。说真的,这比
myArray.slice()
好得多。。。这是一个例子。我实际上是想把一个数组分成几个组,是的,我知道可以用u.sortBy()来完成。从功能上讲,map和reduce是其他更复杂的列表理解函数的构建块。所以我的问题是想理解为什么reduce不返回列表,这是我仅使用reduce对组进行排序的第一步。