Вложенный цикл не выполняет итерацию правильно - PullRequest
0 голосов
/ 28 июня 2018

У меня есть две строки, которые я разделил и хочу перебрать, и использую значение в операторе 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 голосов
/ 28 июня 2018

На основании комментария, в котором ОП добавляет "Я стремлюсь получить 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);
0 голосов
/ 28 июня 2018

За ваш комментарий:

Я стремлюсь получить BMW car1, Volvo car2, SAAB car3

Цикл и создание нового списка можно выполнить с помощью .map(). Мы перебираем список брендов и получаем тот же элемент индекса из car. Затем мы объединяем два значения в одну строку: (brand) (car). В результате получается новый массив со списком марок и автомобилей.

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

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

var brandCars = brand.map((item,index) => `${item} ${car[index]}`);
console.log(brandCars);
0 голосов
/ 28 июня 2018

автомобилей повторяется с j, поэтому измените

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

до:

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