Javascript Can';t找出执行特定任务的给定本机替代代码

Javascript Can';t找出执行特定任务的给定本机替代代码,javascript,lodash,Javascript,Lodash,无法找出执行特定任务的给定本机可选代码,这些任务是创建一个按给定大小参数分组的元素数组 有了lodash,我已经用..chunk解决了这个任务,但是文档中有两个版本,一个是lodash,另一个是本机JavaScript 我对本机版本感兴趣,我已经开始破译它,但我无法理解它。我知道reduce是如何工作的,但有条件的部分就是我被卡住的地方。我理解如果条件为真,它将返回一个特定的值,但我仍然不清楚,特别是带括号符号的返回值,如果有人能详细解释,我将不胜感激 // Lodash _.chunk(['

无法找出执行特定任务的给定本机可选代码,这些任务是创建一个按给定大小参数分组的元素数组

有了lodash,我已经用
..chunk
解决了这个任务,但是文档中有两个版本,一个是lodash,另一个是本机JavaScript

我对本机版本感兴趣,我已经开始破译它,但我无法理解它。我知道
reduce
是如何工作的,但有条件的部分就是我被卡住的地方。我理解如果条件为真,它将返回一个特定的值,但我仍然不清楚,特别是带括号符号的返回值,如果有人能详细解释,我将不胜感激

// Lodash

_.chunk(['a', 'b', 'c', 'd'], 3); // This one is solve 
// => [['a', 'b', 'c'], ['d']]


// Native

const chunk = (input, size) => {
   return input.reduce((arr, item, idx) => {
      return idx % size === 0 // This entire part of conditional is not clear
        ? [...arr, [item]]
        : [...arr.slice(0, -1), [...arr.slice(-1)[0], item]];
   }, []);
};

chunk(['a', 'b', 'c', 'd'], 3);
// => [['a', 'b', 'c'], ['d']]

代码所做的就是这样

  • 创建一个空数组
  • 它在该数组中创建另一个嵌套的空数组
    []
  • 它每次都将每个元素添加到该嵌套数组中
  • 如果索引是
    3
    的倍数,则会添加另一个嵌套数组,并继续向其中添加元素
更容易理解的版本是

const chunk=(输入,大小)=>{
返回输入。减少((arr,项目,idx)=>{
如果(idx%大小===0){
//前面的嵌套数组
让前一个=arr;
//使用当前元素添加新的嵌套数组
设newArr=[item];
//两全其美
返回arr.concat([newArr]);
} 
否则{
//这是数组的一部分,包含除最后一个之外的所有嵌套数组
设allExepctLast=arr.slice(0,-1);
//这是最后一个嵌套数组
设last=arr.slice(-1)[0];
//将当前元素添加到最后一个嵌套数组的末尾。
让addedValue=[…最后一项,项目]
返回[…allExepctLast,addedValue]
}
}, []);
};

log(块(['a','b','c','d'],3))它是这样的:第一个调用为true,因此它返回一个当前值为[a]的空数组?@Jesse No当前值将变为
[['a']]
。请参阅我一步一步解释的更新。