JavaScript:将数组合并为 N 大小

标签 javascript arrays node.js

我有一个像这样的数组:

[ 
  [ 'a', 'b', 'c', 'd' ],
  [ 'h', 'i', 'j' ],
  [ 'g' ],
  [ 'k' ],
  [ 'o', 'p' ] 
]

如何从给定的输入数组创建多个数组(总共有 5 个元素)?

输出示例:

['a', 'b', 'c', 'd', 'g'],
['a', 'b', 'c', 'd', 'k'],
['h', 'i', 'j', 'g', 'k'],
['h', 'i', 'j', 'o', 'p'],

但是,元素不能分开,例如:

['a', 'h', 'i', 'j', 'g']

['a'] 元素应与 ['a', 'b', 'c', 'd'] 放在一起,不能分开。它应该使用 ['k'] 代替,因为它是单个元素。

谢谢!

最佳答案

就这样吧:)

 function combineArrays(arraysArray) {
    let combinedArraysArray = [];
    for (let i=0; i<arraysArray.length; i++) {
        for (let j=i+1; j<arraysArray.length; j++) {
            if (arraysArray[i].length + arraysArray[j].length <= 5) {
                let tempCombinedArray = arraysArray[i];
                for (let k=j; k<arraysArray.length; k++) {
                    if (tempCombinedArray.length === 5) {
                        break;
                    } else if (tempCombinedArray.length + arraysArray[k].length <= 5) {
                        tempCombinedArray = tempCombinedArray.concat(arraysArray[k]);
                    }
                }
                if (tempCombinedArray.length === 5) {
                    combinedArraysArray.push(tempCombinedArray);
                }
            }
        }
    }
    return combinedArraysArray;
}

关于JavaScript:将数组合并为 N 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51297449/

相关文章:

在 C 中的字符串 vector 之间复制字符串

c - 使用 sscanf 解析不会保留数组以供后续使用

node.js - session ID cookie 应该签名吗?

node.js - 使用 Node 对 MongoDB 的 PATCH 方法

javascript - 异步JavaScript执行顺序?

javascript - 即使启用了 JavaScript,也会显示 Noscript 标签的内容?

javascript - XMLHttpRequest 模块未定义/未找到

php - 合并两个数组而不更改键值php

node.js - IISNode Socket.io NodeJS 应用程序(使用 socketio4net 从 C# 连接)

javascript - PHP 脚本不等待 Ajax 和 jQuery document.ready