#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. По крайней мере, я ценю ваш вклад. Что странно, так это то, что, похоже, не удается отладить код. Это должна быть какая-то проблема, связанная с этим, а не с самим кодом, который я себе представляю.