簡體   English   中英

在JavaScript中以所有可能的方式將2個數組合並為1個

[英]Combine 2 arrays into 1 in all possible ways in 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:
答:[“我”,“您”,“他”,“她”]
B:[“ am”,“ is”,“ are”]

預期結果:
[
“我是”,“你是”,“他是”,“她是”,
“我是”,“你是”,“他是”,“她是”
“我是”,“你是”,“他是”,“她是”
]

 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); 

var arr1 = ['a', 'b', 'c'];
var arr2 = ['d', 'e', 'f'];

var arr3 = arr1.concat(arr2);

// arr3 is a new array [ "a", "b", "c", "d", "e", "f" ]

但您似乎想要像這樣對數組進行求和:

var array1 = [1,2,3,4];
var array2 = [5,6,7,8];

var sum = array1.map(function (num, idx) {
  return num + array2[idx];
}); 
// [6,8,10,12]

如果您的目標是合並兩個數組,則這是ES6方式:

const arr1 = ['a', 'b', 'c'];
const arr2 = ['d', 'e', 'f'];

const arr3 = [...arr1, ...arr2]; // Output: [ "a", "b", "c", "d", "e", "f" ]

但是,在您的情況下(編輯后),您想做更多!

const arr1 = [ "I", "You", "He", "She" ];
const arr2 = [ "am", "is", "are" ];

arr2.map(eltB => arr1.map(eltA => `${eltA} ${eltB}`))
    .reduce((newArray, arr) => newArray.concat(arr), []);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM