@TurnerIT

Как проработать весь массив?

Добрый день!
Есть у меня вот такой код. суть которого перебрать массивы в массиве и отобрать те, в которых не встречается заданный элемент
function filteredArray(arr, elem) {
  let newArr = [];
  for(let i = 0; i < arr.length; i++) {
  for(let j = 0; j < arr.length; j++) {
    let a = arr[i][j];
    if (a !== elem) {
      newArr.push(arr[i])
    }
    return newArr;
  }
} 
}
console.log(filteredArray([[10, 8, 3], [14, 6, 23], [3, 18, 6]], 18));

И вот в чем суть, итерация идет до первого не совпадения(как в условии), отбирает массив и, я так понял, выходит из выполнения (return ведь).
До второго массива дело просто не доходит. Я так думаю.
Подскажите, верны ли догадки, и если да, то что делать ?
Как всегда благодарю за ответы)
  • Вопрос задан
  • 75 просмотров
Пригласить эксперта
Ответы на вопрос 1
@bill876
Нет, ваш код смотрит только на элемент arr[0][0] после чего всегда делает return, независимо от того какое там было попалось число
По поводу что делать есть два варианта -
1) убрать return за пределы тел циклов и подумать зачем вы его вообще туда поставили. Дальше у вас будет проблема, что вы найдете все подмассивы которые содержат несовпадающие элементы, в то время когда вы хотите найти не содержащие совпадающие
2) если это практическая задача, а не академическая, то использовать стандартные возможности массивов и вместо всего этого написать в теле функции только
return arr.filter(innerArray => !innerArray.includes(elem))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы