Javascript循环并连接2个数组

时间:2017-02-28 13:07:26

标签: javascript loops for-loop

我正在尝试循环并连接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] + "|");
    }
  }
}

这只输出一个值并且不会循环,我的循环中断的任何想法。

7 个答案:

答案 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_twojoin()中的元素来创建字符串。

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)

使用for循环

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;