Добрый день.
Не могу понять, как правильно сделать, чтобы метод indexOf() работал и выводил в консоль найденный элемент.
if (array.indexOf(element)) {
console.log(element);
} else {
return -1 && console.log('Element not found');
}
Array.prototype.indexOf() возвращает позицию найденного элемента в массиве (с нуля). Если элемент не был найден, то возвращается -1.
Сначала необходимо проверить, есть ли в массиве искомый элемент вообще, а уж потом его выводить. Для проверки на -1 (отсутствие элемента) можно воспользоваться битовыми операциями: код внутри блока if выполнится, если элемент в массиве найден. Кстати говоря, это справедливо только для тех случаев, если в массиве все индексы положительные (и да, это не обязательное условие, к сожалению).
if (~array.indexOf(element)) {
// ...
}
В целом ответ может выглядеть так:
let index = array.indexOf(element); // получаем позицию элемента (-1, если не найден)
if (~index) { // равносильно array.indexOf(element) !== -1
console.log(array[index]);
}
Пример выше выведет element, если он есть в массиве.
Первым делом мы записываем индекс найденного (или нет, пока не важно) элемента в переменную. Далее мы проверяем эту переменную. Если ее значение - -1, то код не выполнится (если элемент не был найден). Если элемент был найден, то выводим элемент массива под индексом [index].
Стоит упомянуть, пожалуй, про читабельность такого кода. С одной стороны выглядит он намного красивее, а работает с таким же успехом (если не быстрее), но человек, читающий ваш код и незнакомый с подобного рода вещами может встать в ступор. Так что используйте на свое усмотрение.
Если ты в массиве ищешь элемент советую использовать метод Array.find() ссылка на доку: https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/find
Пример
const yourElement = element;
const findedElement = myArray.find(item => {
return item === yourElement;
});
Array.find() вернет undefined если ничего не найдет
"use strict";
function findElementInArray(element, array) {
if ( ~array.indexOf(element) ) {
console.log(element);
return;
}
console.log('Element not found');
}
findElementInArray(2, [1,2,3,4,5,6,7,8]); // 2
findElementInArray('a', [1,2,3,4,5,6,7,8]); // Element not found
return -1; будет вызывать ошибку Illegal return statement, лучше вернуть строкой
var index = array.indexOf(element);
if (index >=0) {
console.log(array[index]);
} else {
console.log('Element not found with index ' + index)
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости