findIndex возвращает неопределенное значение вместо числа

#javascript #arrays #typescript #ecmascript-6

Вопрос:

У меня есть следующий код:

 const index = myArray.findIndex(
      (f) =>
        f.name === term1 ||
        f.name === term2
    );
 

Поскольку я пытаюсь выполнить отладку в инструментах разработки Chrome, если я устанавливаю точку останова после этого фрагмента, index всегда отображается как undefined . Насколько я понимаю , findIndex всегда следует возвращать a number , первый индекс массива, в котором выполняется условие, -1, если оно никогда не выполняется.

Если я прервусь сразу после этого кода и использую консоль для ручного ввода кода, но не назначу его ничему, консоль покажет правильный номер индекса. Проблема не в том, что элемент найден в массиве. Он есть, но в отладчике он будет отображаться только неопределенным.

Почему этот код возвращается undefined , а не a number ?

*Я пробовал это в Firefox и Edge. Там тоже та же проблема.

Комментарии:

1. Когда вы говорите, что устанавливаете точку останова «после» этого кода, вы имеете в виду сразу после этого кода, как в следующем заявлении после const объявления?

2. ДА. Я пытался взломать несколько пунктов кода, который следует за const . Любые другие переменные, которые я проверяю, верны, просто нет index

3. Похоже, вы неправильно используете отладчик или смотрите на оценочное значение const оператора, которое всегда undefined есть . Пример

4. В этот момент единственное, о чем я могу думать, — это о плохом Array.prototype.findIndex заполнении .

5. index Используется ли это позже в вашем программном коде? Если нет, то переменная может быть оптимизирована. Кроме того, вы используете транспилер? Возможно, он переименовал переменную, и отладчик не находит имя цели в исходной карте.

Ответ №1:

Просто немного расширяю ваш код, у меня есть :-

 const term1 = 'aaa';
const term2 = 'bbb';
const myArray = [ { name: 'ccc' }, { name: 'ddd' }, ];
const index = myArray.findIndex(
  (f) =>
    f.name === term1 ||
    f.name === term2
);
console.log(index);
 

Я всегда получаю ожидаемый результат -1 или как ожидалось. Я пробовал возиться с различными комбинациями и типами — не получилось.

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

Извините — это не является ответом — просто некоторые данные 🙂

Комментарии:

1. По крайней мере, я ценю ваш вклад. Что странно, так это то, что, похоже, не удается отладить код. Это должна быть какая-то проблема, связанная с этим, а не с самим кодом, который я себе представляю.