我有两个数组,例如:
数组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}}
提前谢谢
答案 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}}