Javascript - 如何连接两个不同大小的数组的字符串值?

时间:2018-01-23 22:18:40

标签: javascript arrays string multidimensional-array

我有两个数组,例如:

数组1:

arr2 = ["EJID", "EMBA", "EMPR", "GOBI", "PART", "PPOL", "SACI", "SOFL", "SOFM", "0000", "", "0002", "0003", "0004", "0005", "0006", "0007", "0008", "0009", "0010", "0011", "0012", "0013", "0014", "0015", "0016", "011", "0110", "9999"]

ARRAY2:

final = ['Precon-EJID', 'Contra-EJID', 'Postco-EJID', 'Cancel-EJID', 'Consul-EJID', 'Precon-EMBA', 'Contra-EMBA', 'Postco-EMBA', 'Cancel-EMBA', 'Consul-EMBA', 'Precon-EMPR', 'Contra-EMPR', 'Postco-EMPR', 'Cancel-EMPR', 'Consul-EMPR'...etc]

我想从上面的两个生成一个新数组,将上面的各个项连接到array1中的每个项递归到新项目,以获得这样的最终数组:

{{1}}

提前谢谢

6 个答案:

答案 0 :(得分:4)

您可以使用2个简单的for of循环执行此操作:



var arr1 = ["Precon", "Contra", "Postco", "Cancel", "Consul"];

var arr2 = ["EJID", "EMBA", "EMPR", "GOBI", "PART", "PPOL", "SACI", "SOFL", "SOFM", "0000", "", "0002", "0003", "0004", "0005", "0006", "0007", "0008", "0009", "0010", "0011", "0012", "0013", "0014", "0015", "0016", "011", "0110", "9999"]

var finalArr = [];

for ( var item2 of arr2 ) {
  for ( var item1 of arr1 ) {
    finalArr.push(`${item1}-${item2}`);
  }
}

console.log(finalArr);




答案 1 :(得分:2)

您可以使用嵌套的Array#map来电,并使用Array#concat展平结果:



const arr1 = ["Precon", "Contra", "Postco", "Cancel", "Consul"]

const arr2 = ["EJID", "EMBA", "EMPR", "GOBI", "PART", "PPOL", "SACI", "SOFL", "SOFM", "0000", "", "0002", "0003", "0004", "0005", "0006", "0007", "0008", "0009", "0010", "0011", "0012", "0013", "0014", "0015", "0016", "011", "0110", "9999"]

const result = [].concat(...arr2.map((s1) => arr1.map((s2) => `${s2}-${s1}`)))

console.log(result)




答案 2 :(得分:0)

这是一个单行代码:



arr1 = ["Precon", "Contra", "Postco", "Cancel", "Consul"]
arr2 = ["EJID", "EMBA", "EMPR", "GOBI", "PART", "PPOL", "SACI", "SOFL", "SOFM", "0000", "", "0002", "0003", "0004", "0005", "0006", "0007", "0008", "0009", "0010", "0011", "0012", "0013", "0014", "0015", "0016", "011", "0110", "9999"]

const result = [].concat(...arr1.map(prefix => arr2.map(suffix => prefix+suffix)));
console.log(result)

// EDIT: if order matters, reverse the use of arr1 and arr2:

const orderedResult = [].concat(...arr2.map(suffix => arr1.map(prefix => prefix+suffix)));
console.log(orderedResult)




答案 3 :(得分:0)



const prefixes = [
  "Precon",
  "Contra",
  "Postco",
  "Cancel",
  "Consul"
];

const suffixes = [
  "EJID", "EMBA", "EMPR",
  "GOBI", "PART", "PPOL",
  "SACI", "SOFL", "SOFM",
  "0000", "", "0002",
  "0003", "0004", "0005",
  "0006", "0007", "0008",
  "0009", "0010", "0011",
  "0012", "0013", "0014",
  "0015", "0016", "011",
  "0110", "9999"
];

const results = suffixes
  .map(suffix => prefixes.map(prefix => prefix + '-' + suffix))
  .reduce((xs, ys) => [...xs, ...ys]);

console.log(results);




答案 4 :(得分:0)

另一个选择是使用reduce ...



let arr1 = ["Precon", "Contra", "Postco", "Cancel", "Consul"]

let arr2 = ["EJID", "EMBA", "EMPR", "GOBI", "PART", "PPOL", "SACI", "SOFL", "SOFM", "0000", "", "0002", "0003", "0004", "0005", "0006", "0007", "0008", "0009", "0010", "0011", "0012", "0013", "0014", "0015", "0016", "011", "0110", "9999"]

let arr3 = arr2.reduce((arr, val) => {
    let f = []
    arr1.forEach(itm => val && f.push(itm + '-' + val))
    return arr.concat(f)
}, [])

console.log(arr3)




答案 5 :(得分:0)

这是一个递归的。就像OP问的那样。花了我一会儿。 :P



{{1}}