代码之家  ›  专栏  ›  技术社区  ›  Wolfdog

用逗号和最大计数器合并数组元素

  •  -4
  • Wolfdog  · 技术社区  · 7 年前

    所以我有一个ID数组,类似这样:

    const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
    

    我需要一个函数 合并数组(arr,3) ,它应该返回逗号分隔的值,最多包含3个元素,如下所示:

    const newArr = ['1,2,3', '4,5,6', '7,8,9', '10,11'];
    

    4 回复  |  直到 7 年前
        1
  •  2
  •   Nathan Gouy    7 年前

    把你的数组分成3个长度的数组,然后直接连接起来

    const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
    
    const mergeArray = (arr, size) => {
      let res = [];
      for (i = 0; i < arr.length; i += size) { 
        res.push(arr.slice(i, i + size).join(','));
      }
      return res;
    }
    
    console.log(mergeArray(arr, 3));
        2
  •  1
  •   Mamun    7 年前

    你可以 split() 将数组转换为特定大小 join() 在放入结果数组之前:

    const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
    var i, j, newArr=[], size = 3;
    for (i=0,j=arr.length; i<j; i+=size) {
      newArr.push(arr.slice(i, i+size).join());
    }
    console.log(newArr);
        3
  •  0
  •   Leonid Pyrlia    7 年前

    Array.prototype.reduce Array.prototype.map

    const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
    
    function mergeArray(arr, n) {
        return arr
              .reduce((all, el, i) => {
    
                  const ind = Math.floor(i/n);
                  all[ind] = [...all[ind] || [], el]
    
                  return all;
    
              },[])
              .map(a => a.join(','))
    }
    
    console.log(mergeArray(arr, 3));
        4
  •  0
  •   Nina Scholz    7 年前

    您可以加入数组并用正则表达式匹配所需的部分。

    var data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
        result = data.join(',').match(/\d+(,\d+(,\d+)?)?/g)
    
    console.log(result);