javascript - 在 JavaScript 中以所有可能的方式将 2 个数组合并为 1 个数组

标签 javascript

我的目标是以所有可能的方式合并 2 个数组,第一个数组将始终是单元格的第一部分,第二个数组将始终位于单元格的第二部分。
我的最后一次尝试,这是最接近但不完全是我需要的:

function combineArrays(array1, array2) {
    let arr = [];
    for (let i = 0; i < array1.length; i++) {
        arr[i] = array1[i];
    }
    for (let i = 0, j = 0; i < array1.length; i++) {
        arr[i] += array2[j];
        if (array2[j + 1]) {
            j++;
        }
        else {
            j = 0;
        }
    }
    return arr;
}

编辑:
例如数组A和数组B:
A:[“我”、“你”、“他”、“她”]
B:["is","is","is"]

预期结果:
[
“我是”,“你是”,“他是”,“她是”,
“我是”,“你是”,“他是”,“她是”,
“我是”,“你是”,“他是”,“她是”
]

最佳答案

let a = ["I", "You", "He", "She"];
let b = ["am", "is", "are"];
let result = b.map(b => a.map(a => a + ' ' + b));

console.log(result);

如果您不想要嵌套数组:

let a = ["I", "You", "He", "She"];
let b = ["am", "is", "are"];
let result = b.reduce((arr, b) => arr.concat(a.map(a => a + ' ' + b)), []);

console.log(result);

对于 n 个数组:

    let a = ["I", "You", "He", "She"];
    let b = ["am", "is", "are"];
    let c = ["good", "bad", "happy"];
    let crossProduct = (a, b) => b.reduce((arr, b) => arr.concat(a.map(a => a + ' ' + b)), []);
    
    let result = [a, b, c].reduce(crossProduct);

    console.log(result);

关于javascript - 在 JavaScript 中以所有可能的方式将 2 个数组合并为 1 个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44911991/

相关文章:

javascript - MongoDb forEach 异步回调

javascript - 多个ajax请求的速率限制

javascript - 过渡动画错误

javascript - 为什么这会关闭新的弹出窗口

php - 检查用户名是否可用于 AJAX

javascript - HTML Javascript 文件上传

javascript - React中如何判断当前路由是否活跃

javascript - 如何用 gulp 反转 Angular 脚本顺序注入(inject)?

javascript - 使用 CSS3 旋转属性时 jQuery .position() 奇怪

javascript - 多行轮播居中