javascript - 从数组中提取 "N"值

标签 javascript

目标

“Chunky Monkey”问题:根据给定的数组 ('arr') 和数字 ('size') 创建一个新的多维数组。新的多维数组应创建等于“大小”变量的数组长度。

示例#1

chunk(['a', 'b', 'c', 'd'], 2);
var answer = [];
function chunk(arr,size){
//do something
};

return answer

预期答案#1

answer = [['a','b'],['c','d']];

示例 #2

下面是一个元素/大小为奇数的示例 - 在这种情况下,预期结果是有一个“剩余”组。

chunk(['a', 'b', 'c', 'd'], 3);
    var answer = [];
    function chunk(arr,size){
    //do something
    };

    return answer

预期答案#2

answer = [['a','b','c'],['d']];


我的伪代码/方法

var final = [];
function chunk(arr, size) {
  //extract number of elements from 'arr' = 'size' 
  var extract = function{
    //HELP! [INSERT LOGIC]
  };

  //add extracted elements to 'group' array
  var group = [extract];

  //push 'group' to 'final' array for multidimensional array
  final.push(group);

  //return final'
  return final;
}

chunk(['a', 'b', 'c', 'd'], 2);

问题

  1. 我一直在寻找@.forEach()、for(in) 循环、.slice() 等,但无济于事。我所有的方法都会导致循环遍历数组,但不会“配对”。
  2. 我是不是把事情复杂化了?有没有比我的伪代码/方法更直接的方法?

最佳答案

您可以使用递归函数:

function chunk(arr, size) {
    if(!arr.length) return [];
    return [arr.slice(0, size)].concat(chunk(arr.slice(size), size));
}

或者一个循环:

function chunk(arr, size) {
    arr = arr.slice();
    var ret = [];
    while(arr.length) ret.push(arr.splice(0, size));
    return ret;
}

关于javascript - 从数组中提取 "N"值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30225992/

相关文章:

php - 如何为每个文本输入编写 $_POST 方法

javascript - 如何在threejs中为相机添加datgui控件?

javascript - 使用 javascript href 链接附加一次

javascript - 在运行时构造 javascript 变量名

javascript - Node : Can't sign in nodeJS 10. 14.2

javascript - HTML5的canvas元素有重绘事件吗?

javascript - Node 版本 8 中 Async/Await 的性能指南

Javascript++ 与 +=1

JavaScript 卡在从 HTML 访问样式元素上

javascript - 尝试使用 Polymer paper-toggle-button