嵌套的for循环未正确迭代

时间:2018-06-28 15:09:46

标签: javascript for-loop nested

我有两个字符串,我将它们拆分并进行迭代,并在IF语句中使用该值。但是,当我打印这些值时,输出是不正确的(它会多次打印这些值)。

所需的输出: 因此,基本上,在循环的第一次迭代中,我想将 BMW car1 作为值。此外,进入IF语句将意味着将变量year设置为 1999

<!DOCTYPE html>
<html>
<body>

<script>
var input = "BMW Volvo Saab";
var brand = input.split(" ");
var brandOut = "";
var i;


var input2 = "car1 car2 car3";
var car = input2.split(" ");
var carOut = "";
var j;



for (i = 0; i < brand.length; i++) {
    for (j = 0; j < car.length; j++) {
    brandOut += brand[i];
    carOut += car[j];


//document.write(brandOut);
//document.write(carOut);

if (carOut == 'car1'){
    var year = "1999"

} else if (carOut == 'car2'){
    var year = "2000"

} else {
    var year = "2001";
}


//do something with the current value of year for each iteration of the loop

    }
}

</script>

</body>
</html>

3 个答案:

答案 0 :(得分:1)

汽车用j迭代,所以改变

carOut += car[i] + "<br>"

收件人:

carOut += car[j] + "<br>"

答案 1 :(得分:1)

基于OP添加“我旨在获得BMW car1, Volvo car2, SAAB car3”的评论

您可以通过映射其中一个数组并将第二个数组的值与地图的迭代器相加来解决此问题。

希望这会有所帮助:>

var input = "BMW Volvo Saab";
var brand = input.split(" ");



var input2 = "car1 car2 car3";
var car = input2.split(" ");



var arr = brand.map((brand, i) => brand + ' ' + car[i]).join(',')

console.log(arr);

答案 2 :(得分:1)

根据您的评论:

  

我旨在获得Observable

可以使用this完成循环和创建新列表。我们遍历品牌列表,并从BMW car1, Volvo car2, SAAB car3获取相同的索引项。然后,我们将两个值组合成一个字符串:.map()。结果是一个包含品牌和汽车列表的新阵列。

car