我正在尝试循环并连接2个数组,如下所示,我不知道有多少值,因为用户可以购买1或100个产品,因此需要循环。
Array1 = ['ABC', 'DEF', 'GHI']
Array2 = ['123', '45', '6789',]
我需要输出为:
ABC:123|DEF:45|GHI:6789
目前代码我有......
function() {
var array_one = ['ABC', 'DEF', 'GHI', 'JKL'];
var array_two = ['179.99', '349.99', '399.99', '389'];
for (var i = 0; i < array_one.length; i++) {
for (var j = 0; j < array_two.length; j++) {
return(array_one[i] + ":" + array_two[j] + "|");
}
}
}
这只输出一个值并且不会循环,我的循环中断的任何想法。
答案 0 :(得分:3)
如果您知道两个数组的长度相同,那么简单的映射就足够了:
var array1 = ['ABC', 'DEF', 'GHI']
var array2 = ['123', '45', '6789']
var result = array1.map(function(item, index) {
return item + ':' + array2[index]
}).join('|')
console.log(result)
或ES2015版本:
var result = array1.map((item, index) => `${item}:${array2[index]}`).join('|')
答案 1 :(得分:1)
你的逻辑没有错,你真的不需要两个循环。只需一个循环就可以完成,你不应该在循环中返回。
由于它们的大小相同,因此下面的代码应该
var result="";
for (var i = 0; i < array_one.length; i++) {
result += (array_one[i] + ":" + array_two[i] + "|");
}
return result;
答案 2 :(得分:1)
您可以使用map()
添加array_two
和join()
中的元素来创建字符串。
var array_one = ['ABC', 'DEF', 'GHI', 'JKL'];
var array_two = ['179.99', '349.99', '399.99', '389'];
var result = array_one.map(function(e, i) {
return e + ':' + array_two[i]
}).join('|')
console.log(result)
答案 3 :(得分:1)
您可以使用Array.reduce
var array_one = ['ABC', 'DEF', 'GHI', 'JKL'];
var array_two = ['179.99', '349.99', '399.99', '389'];
var result = array_one.reduce(function(p, c, i, a) {
p += c + ":" + array_two[i]
if (i < a.length - 1)
p+="|"
return p;
}, "")
console.log(result)
var array_one = ['ABC', 'DEF', 'GHI', 'JKL'];
var array_two = ['179.99', '349.99', '399.99', '389'];
var result = "";
for(var i = 0; i< array_one.length; i++){
result += array_one[i] + ":" + array_two[i]
if (i < array_one.length - 1)
result += "|"
}
console.log(result)
答案 4 :(得分:0)
var arr1 = ['ABC', 'DEF', 'GHI'],
arr2 = ['123', '45', '6789'],
result = '';
//iterate over every element from arr1 and add it into the
//result string with corresponding value from arr2
arr1.forEach((v,i) => result += v + ':' + arr2[i] + '|');
console.log(result.slice(0, -1)); //cut the `|` sign from the end of the string
答案 5 :(得分:0)
这只输出一个值,不会循环,任何想法 我的循环在哪里破碎。
原因是什么?
它只返回一个值,因为您在第一次迭代中使用return
关键字,因此它将在第一次迭代中退出。
错误发生在哪里?
以下代码是您的循环中断的地方:
return(array_one[i] + ":" + array_two[j] + "|");
如何解决问题?
Note
:在这种情况下你实际上并不需要嵌套循环,因为两个数组都有相同的长度,所以我们可以简化它。
为了改进您当前的解决方案,我们可以创建一个字符串变量并将结果附加到那里,如:
function() {
var array_one = ['ABC', 'DEF', 'GHI', 'JKL'];
var array_two = ['179.99', '349.99', '399.99', '389'];
var result = "";
for (var i = 0; i < array_one.length; i++) {
result += array_one[i] + ":" + array_two[i] + "|";
}
return result;
}
答案 6 :(得分:-1)
只有一个&#39; for循环&#39;足以满足你想要的输出
var returnValue = "";
for (var i = 0; i < array_one.length; i++)
{
returnValue+ =array_one[i] + ":" + array_two[j] + "|";
}
return returnValue;