Хранение одного элемента массива в переменной

1

Я начал изучать код и JavaScript почти два месяца назад. И, я думаю, теперь я хорошо знаю основы, кроме массивов. У меня большая проблема с массивами, когда дело доходит до итерации и хранения ОДНОГО одиночного элемента в данной переменной.

Например:

function getIndexToIns(arr, num) {
  // Find my place in this sorted array.
  var sorted = arr.sort(function(a, b) {
    return a > b;
  });

  // console.log(sorted);

  var checker = 0;
  var finalResult = 0;

  for (var i = 0; i < sorted.length; i++) {
    checker = num;
    if (checker <= sorted[i]) {
      checker = sorted[i];
      console.log(checker);
      finalResult = arr.indexOf(checker);
    }
  }
    return finalResult;
}



console.log(getIndexToIns([10, 20, 30, 40, 50], 35));

В этом примере я хочу выполнить цикл над arr и всякий раз, if условие if true сохраните это значение в переменной checker. Но он сохраняет это значение 40 но цикл не останавливается, он продолжает и сохраняет оставшиеся элементы в массиве также, то есть 50.

Пожалуйста, объясните мне концепцию и как остановить цикл и сохранить этот единственный элемент, когда условие истинно.

  • 1
    Вы должны добавить break; в вашем, if остановить цикл.
  • 1
    Array#sort сортирует на месте, и ему нужно не логическое значение, а значение меньше нуля, нуля или больше нуля, в зависимости от требуемого порядка.
Теги:
arrays
for-loop

2 ответа

1
Лучший ответ

Некоторые аннотации

function getIndexToIns(arr, num) {
    var i;                             // declare at top

    arr.sort(function (a, b) {         // sort sorts in situ
        return a - b;                  // return delta, because sort expects
    });                                // numerical values

    for (i = 0; i < arr.length; i++) {
        if (arr[i] >= num) {
            break;                     // exit loop on find
        }
    }
    return i;                          // no need for indexOf, index is known
}

console.log(getIndexToIns([10, 20, 30, 40, 50], 35));
console.log(getIndexToIns([10, 20, 30, 40, 50], 100));
0

Вы должны использовать оператор break, когда хотите вернуться из цикла for.

function getIndexToIns(arr, num) {
  // Find my place in this sorted array.
  var sorted = arr.sort(function(a, b) {
    return a > b;
  });

  // console.log(sorted);

  var checker = 0;
  var finalResult = 0;

  for (var i = 0; i < sorted.length; i++) {
    checker = num;
    if (checker <= sorted[i]) {
      checker = sorted[i];
      console.log(checker);
      finalResult = arr.indexOf(checker);
      break;
    }
  }
    return finalResult;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню