资讯专栏INFORMATION COLUMN

【译】JS基础算法脚本:数组分割

djfml / 1348人阅读

摘要:方法返回一个从开始到结束不包括结束选择的数组部分浅拷贝到一个新数组对象方法通过删除现有元素和或添加新元素来更改一个数组的内容。

需求

给出一个数组,按长度要求分割成多维数组

chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6], 3) should return [[0, 1, 2], [3, 4, 5], [6]]
chunkArrayInGroups(["a", "b", "c", "d"], 2) should return [["a", "b"], ["c", "d"]]
思路1

1.arr.splice()截取数组
2.当数组元素截取完时,停止截取,返回新数组

function chunkArrayInGroup(arr,size) {
    var newArr = [];
    while(arr.length>0) {
        newArr.push(arr.splice(0,size));
    }
    return newArr;
}

chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6], 3);
思路2

1.arr.slice()截取数组
2.当数组元素截取完时,停止截取,返回新数组

function chunkArrayInGroup(arr,size) {
    var newArr = [],
    i=0;
    while(i
function chunkArrayInGroups(arr, size) {
  // Break it up.
  var arr2 = [];
  for (var i = 0; i < arr.length; i+=size) {
    arr2.push(arr.slice(i , i+size));
  }
  return arr2;
}

chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6], 3);
思路3

1.for循环,暂存子数组
2.到达指定长度,存入新数组
3.如有剩余元素,存入新数组

function chunkArrayInGroups(arr, size) {

  var temp = [];
  var result = [];

  for (var a = 0; a < arr.length; a++) {
    if (a % size !== size - 1)
      temp.push(arr[a]);
    else {
      temp.push(arr[a]);
      result.push(temp);
      temp = [];
    }
  }

  if (temp.length !== 0)
    result.push(temp);
  return result;
}
chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6,7], 3);
相关
Array.prototype.push()

push() 方法将一个或多个元素添加到数组的末尾,并返回数组的新长度。

Array.prototype.slice()

slice()方法返回一个从开始到结束(不包括结束)选择的数组部分浅拷贝到一个新数组对象

Array.prototype.splice()

splice() 方法通过删除现有元素和/或添加新元素来更改一个数组的内容。

array.splice(start, deleteCount, item1, item2, ...)

有其他好的方法或思路的道友,不妨在沙发区神交一番。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/91411.html

相关文章

  • JS基础算法脚本:反转字符串

    摘要:需求反转提供的字符串,返回字符串思路分割重排序重组相关函数将字符串分割成一个包含子字符的数组,使用指定的分割字符串来确定分割位置反转数组中的元素不会改变数组,默认为将一个数组或者类数组中的的所有元素拼接到一个字符串有其他好的方法或思路的道友 需求 反转提供的字符串,返回字符串 reverseString(hello) should become olleh. 思路 分割 重排序 重组...

    kamushin233 评论0 收藏0
  • JS基础算法脚本:查找字符串中最长的子字符

    摘要:返回一组数中的最大值。返回数组中所有元素的连接起来的字符串,参数默认为,根据返回一个从开始参数到结束参数的新数组,不改变原数组有其他好的方法或思路的道友,不妨在沙发区神交一番。 需求 给出一个字符串,查找字符串中最长的子字符,并返回其长度 findLongestWord(Google do a barrel roll) 思路1 字符串分割 循环判定,暂存较大值 循环结束,返回最大值...

    forsigner 评论0 收藏0
  • JS基础算法脚本:子字符首字符大写

    摘要:一个用来创建新子字符串的函数,该函数的返回值将替换掉第一个参数匹配到的结果。返回值一个部分或全部匹配由替代模式所取代的新的字符串。 需求 给出一字符串,返回子字符首字符大写的字符串 titleCase(Im a little tea pot) should return Im A Little Tea Pot. 思路1 字符串小写后切割为数组 for循环操作数组元素的首字符 拼接字符...

    Worktile 评论0 收藏0
  • JS基础算法脚本:回文检测

    摘要:返回一个新的字符串,表示串转换为小写的调用字符。不会影响字符串本身的值。返回一个包含子字符的数组,确定分割位置。将数组中所有子元素拼接成一个字符串,不改变原数组。 需求 给出一个字符串,检测是否是回文,是则返回true,不是则返回false(忽略标点符号,大小写,空格) palindrome(A man, a plan, a canal. Panama) should return t...

    Turbo 评论0 收藏0
  • JS基础算法脚本:查找数组每项的最大值

    摘要:方法对累加器和数组中的每个元素从左到右应用一个函数,将其减少为单个值。有其他好的方法或思路的道友,不妨在沙发区神交一番。对的方法有较深理解的的请指点下,这里有点蒙 需求 给出一个2维数组,查找每项子数组中的最大值,返回包含最大值的新数组 largestOfFour([[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 100...

    Amio 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<