首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于设置的间隔合并数组(javascript)

基于设置的间隔合并数组(javascript)
EN

Stack Overflow用户
提问于 2019-10-15 06:14:06
回答 4查看 193关注 0票数 0

我有一个数组数组,即[[3, 6, 7, 7, 4], [5, 9], [4, 1, 6], [6, 3, 6], [5, 7, 8, 9]]。我希望根据间隔来组合这些数组。例如,如果间隔为2,我希望将这些数组中的前两个数组合并为一个数组,然后将下两个数组合并为下一个数组,然后将第三个两个数组合并为下一个数组,依此类推。

我一直在摆弄concat,就是想不出如何实现我想要的东西。我们非常感谢您的帮助,谢谢您的帮助!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-10-15 13:11:00

如果使用forEachreduce遍历外部数组,则可以通过将索引除以间隔将其附加到新结果数组的相应内部数组中:

代码语言:javascript
运行
复制
let arr = [
  [3, 6, 7, 7, 4],
  [5, 9],
  [4, 1, 6],
  [6, 3, 6],
  [5, 7, 8, 9]
]

// combine using forEach
function combine(a, interval) {
  const res = [];
  a.forEach((subA, ii) => {
    const i = Math.floor(ii / interval); // index of combined array in outer array
    res[i] = (res[i] || []).concat(subA); // (create if not existant yet,) append 
  });
  return res;
}

// combine using reduce
function combineR(a, interval) {
  return a.reduce((res, subA, ii) => {
    const i = Math.floor(ii / interval); // index of combined array in outer array
    res[i] = (res[i] || []).concat(subA); // (create if not existant yet,) append   
    return res;
  }, []);
}

console.log(combineR(arr, 3));

票数 1
EN

Stack Overflow用户

发布于 2019-10-15 06:34:17

试试这个:

代码语言:javascript
运行
复制
let arr = [[3, 6, 7, 7, 4], [5, 9], [4, 1, 6], [6, 3, 6], [5, 7, 8, 9]]

function combine(interval, arr){
  let rtrn = [];
  let currentArr=[];
  for(let i=0;i<arr.length;i++){
    if(i>0 && i%interval===0){
      rtrn.push(currentArr);
      currentArr = [];
    }
    currentArr = currentArr.concat(arr[i]);
  }
  rtrn.push(currentArr);
  return rtrn;
}

console.log(combine(2,arr));
票数 0
EN

Stack Overflow用户

发布于 2019-10-15 06:42:48

这是另一个混乱的解决方案:)

代码语言:javascript
运行
复制
test = [[3, 6, 7, 7, 4], [5, 9], [4, 1, 6], [6, 3, 6], [5, 7, 8, 9]];
function concat_arrays(arr, interval) {
  concatenated = [];
  for (i = 0; i < arr.length; i += interval) {
    con = test[i];
    for (j = 1; j < interval && i + j < arr.length; j++) {
      con = con.concat(arr[i+j]);
    }
    concatenated.push(con);
  }
  console.log(concatenated);
}
concat_arrays(test, 3);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58384686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档