Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用两个字符串数组来构建一个组合所有字符串的数组?_Javascript_Arrays - Fatal编程技术网

Javascript 如何使用两个字符串数组来构建一个组合所有字符串的数组?

Javascript 如何使用两个字符串数组来构建一个组合所有字符串的数组?,javascript,arrays,Javascript,Arrays,我有一个零件号数组,['PCI-33',GG-34',GG-32'] 我有一个区域阵列,['UK','US','CA','MX']等等 我正在尝试将这两个阵列组合起来,以便得到如下结果: ['PCI-33-UK'、'GG-34-UK'、'GG-32-UK'、'PCI-33-US'、'GG-34-US'、…、'GG-32-MX'] 什么是一种有效的方法?使用2个嵌套创建组合两个阵列,并应用于展平结果: var strs1=['PCI-33','GG-34','GG-32']; var strs2

我有一个零件号数组,
['PCI-33',GG-34',GG-32']

我有一个区域阵列,
['UK','US','CA','MX']
等等

我正在尝试将这两个阵列组合起来,以便得到如下结果:

['PCI-33-UK'、'GG-34-UK'、'GG-32-UK'、'PCI-33-US'、'GG-34-US'、…、'GG-32-MX']

什么是一种有效的方法?

使用2个嵌套创建组合两个阵列,并应用于展平结果:

var strs1=['PCI-33','GG-34','GG-32'];
var strs2=['UK'、'US'、'CA'、'MX'];
var result=[].concat.apply([],strs1.map(函数(str1){
返回strs2.map(函数(str2){
返回str1+'-'+str2;
});
}));
控制台日志(结果)使用2个嵌套创建组合两个数组,并应用以展平结果:

var strs1=['PCI-33','GG-34','GG-32'];
var strs2=['UK'、'US'、'CA'、'MX'];
var result=[].concat.apply([],strs1.map(函数(str1){
返回strs2.map(函数(str2){
返回str1+'-'+str2;
});
}));
控制台日志(结果)是这类组合的数学术语

如果您不习惯使用“fancier”数组方法,一种简单的方法是使用嵌套的
for
循环:

var parts = ['PCI-33', 'GG-34', 'GG-32'],
    zones = ['UK', 'US', 'CA', 'MX'];

var combined = [];
for(var i = 0; i < parts.length; i++) {
    for(var j = 0; j < zones.length; j++) {
        combined.push(parts[i] + "-" + zones[j]);
    }
}
是这类组合的数学术语

如果您不习惯使用“fancier”数组方法,一种简单的方法是使用嵌套的
for
循环:

var parts = ['PCI-33', 'GG-34', 'GG-32'],
    zones = ['UK', 'US', 'CA', 'MX'];

var combined = [];
for(var i = 0; i < parts.length; i++) {
    for(var j = 0; j < zones.length; j++) {
        combined.push(parts[i] + "-" + zones[j]);
    }
}

带1个回路的ES-1999代码:

var代码=['PCI-33','GG-34','GG-32'];
可变区=['UK'、'US'、'CA'、'MX'];
var-arr=[];
var cl=代码长度;
对于(变量i=0;i控制台日志(arr)ES-1999带有1个循环的代码:

var代码=['PCI-33','GG-34','GG-32'];
可变区=['UK'、'US'、'CA'、'MX'];
var-arr=[];
var cl=代码长度;
对于(变量i=0;i控制台日志(arr)您还可以执行以下操作:

函数组合(a、[b、…bs]){
返回[a+“-”+b].concat(bs.length?combine(a,bs):[]);
}
var arr=['PCI-33','GG-34','GG-32'],
brr=[‘英国’、‘美国’、‘加拿大’、‘墨西哥’],
res=函数运行程序([a,…as],bs){
返回式联合收割机(a,bs).concat(as.length?转轮(as,bs):[]);
}(arr,brr);//这里的生活

控制台日志(res)您还可以执行以下操作:

函数组合(a、[b、…bs]){
返回[a+“-”+b].concat(bs.length?combine(a,bs):[]);
}
var arr=['PCI-33','GG-34','GG-32'],
brr=[‘英国’、‘美国’、‘加拿大’、‘墨西哥’],
res=函数运行程序([a,…as],bs){
返回式联合收割机(a,bs).concat(as.length?转轮(as,bs):[]);
}(arr,brr);//这里的生活

控制台日志(res)到目前为止您尝试了什么?你能展示一下你的尝试吗?这将给其他人一些可以合作的东西,使我们能够解释你的尝试不起作用的原因。也可以为你的尝试提供一个解决方案或一个更好的方法来获得你期望的结果。到目前为止,你尝试了什么?你能展示一下你的尝试吗?这将给其他人一些可以合作的东西,使我们能够解释你的尝试不起作用的原因。也可以为你的尝试提供一个解决方案或一个更好的方法来获得你期望的结果。非常好和干净+1主要区别在于函数式编程和命令式编程。就可读性而言,我发现它更容易使用,但其他人可能不同意。就性能而言,在处理大型阵列时,使用2 for循环应该更快,我之所以使用@PeterOlson answer,是因为它始终有效:)@NewToJS抱歉,我不是有意这样做,但现在无法编辑我的评论。我只是好奇这种差异,想知道这种“可能”是否更好,如果是这样,为什么以及如何。Ori,谢谢你的解释。我学到了更多的命令式范例,所以双for循环更自然,所以我很好奇。@richardhsu没关系,我完全能理解你的问题,但我只是想指出它对其他人或至少对我来说是怎样的。我喜欢看到不同的方法,因为人们从中学习,并根据他们的期望/结果以不同的方式发现它们的好处:)@NewToJS我同意,看到差异是件好事。我通常不使用Javascript编写代码,所以当我看到其他实现时,我通常会感到好奇,我认为我最重要的事情是理解什么时候它可能比其他解决方案更受欢迎,因为这有助于为代码添加一些上下文。也有助于我更好地编码:)非常漂亮和干净+1主要区别在于函数式编程和命令式编程。就可读性而言,我发现它更容易使用,但其他人可能不同意。就性能而言,在处理大型阵列时,使用2 for循环应该更快,我之所以使用@PeterOlson answer,是因为它始终有效:)@NewToJS抱歉,我不是有意这样做,但现在无法编辑我的评论。我只是好奇这种差异,想知道这种“可能”是否更好,如果是这样,为什么以及如何。Ori,谢谢你的解释。我学到了更多的命令式范例,所以双for循环更自然,所以我很好奇。@richardhsu没关系,我完全能理解你的问题,但我只是想指出它对其他人或至少对我来说是怎样的。我喜欢看到不同的方法,因为人们从中学习,并根据他们的期望/结果以不同的方式发现它们的好处:)@NewToJS我同意,看到差异是件好事。我通常不使用Javascript编写代码,所以当我看到其他实现时,我通常会感到好奇,我认为我最重要的事情是始终理解什么时候它可能比其他解决方案更受欢迎,因为这有助于为公司提供一些上下文