Добрый день.
Не могу понять, как правильно сделать, чтобы метод 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)
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте есть сверстанный сайт и к нему подключен script slideoutjs и есть на сайте слайдер вот такая проблема когда я хочу сдвинуть свайпом...
Нужно в зависимости от переменной установить атрибут тега
Я пишу тесты, мне нужно в beforeEach каждый раз обновлять переменную mwЭто глобально доступный синглтон