Вывод первой строки матрицы через forEach

368
08 января 2018, 11:50

Необходимо вывести первую строку матрицы используя цикл forEach

matrix = 
[[7, 2, 7, 2, 8],
[2, 9, 4, 1, 7],
[3, 8, 6, 2, 4],
[2, 5, 2, 9, 1],
[6, 6, 5, 4, 5]];
matrix.forEach(function(item, ind){
    matrix[0].forEach(function(item0, ind0){
        console.log(item0);
    })
    return false;
})

Проблема в том, что строка выводится пять раз подряд(знаю, что это происходит из-за кол-ва массивов в массиве), а мне надо один раз вывести. return false не помогает, подскажите где неправ

Answer 1

Проблема в том, что строка выводится пять раз подряд(знаю, что это происходит из-за кол-ва массивов в массиве), а мне надо один раз вывести.

как уже обсудили в комментариях, очевидно, что первый внешний цикл forEach тут лишний. Вы видимо хотите его прерватьпосле первой же итерации, вернув false

return false не помогает, подскажите где неправ

Однако, возможно, вы путаете .forEach с $.each, ибо для стандартного метода обхода массивов js согласно MDN имеет место быть следующее:

Примечание: Не существует способа остановить или прервать цикл forEach() кроме как выбрасыванием исключения. Если это требуется, метод forEach() неправильный выбор. Используйте обычные циклы.

в то же время для jquery верно следующее:

We can break the $.each() loop at a particular iteration by making the callback function return false

Так что не правы вы в том, что стандартный цикл просто нельзя остановив вернув false из функции обратного вызова.

Answer 2

В комментариях сложно описать, по этому пускай будет ответом ... return false; после выполнения вложенного цикла в данной задаче не имеет никакого смысла ... Так же forEach нельзя прервать, как скажем for, но можно сделать что-то типа такого:

matrix =  
[[7, 2, 7, 2, 8], 
[2, 9, 4, 1, 7], 
[3, 8, 6, 2, 4], 
[2, 5, 2, 9, 1], 
[6, 6, 5, 4, 5]]; 
 
matrix.forEach(function(item, ind){ 
  if(ind !== 0) return false; 
   
  item.forEach(function(item0, ind0){ 
      console.log(item0); 
  }) 
})

Перебор будет полным, но за счет if(ind !== 0) return false; мы просто пропускаем все итерации кроме первой.

READ ALSO
Как получить доступ к кэшу процессора пользователя на JS (Meltdown, Spectre)?

Как получить доступ к кэшу процессора пользователя на JS (Meltdown, Spectre)?

Нашёл такой пример, но он по-моему не работает

294
Как построить график?

Как построить график?

Есть данные которые приходят через сервер в таком виде как вышеа вот сам код

235
Почему не возникает замыкания?

Почему не возникает замыкания?

Я создаю массив, и хочу уменьшать все его элементы на один с каждым вызовом функции myReduceByOne(), помогите разобраться почему не работает через...

234
Open Server игнорирует изменения в файлах

Open Server игнорирует изменения в файлах

Привет!У меня есть сайт на ворд пресс который я поставил на опен сервер, но я ввожу изменения в файлик Css а OpenServer меня игнорирует

242