Elizaveta_Ozerova
@Elizaveta_Ozerova

Как реализовать функцию inArray?

Всем добрый вечер! Я еще совсем новичок в JS. Что такое прототипы и классы, узнала только вчера. Помогите, пожалуйста, решить задачку, наверняка простейшую для вас : )

Требуется реализовать функцию, примеры вызова которой представлены ниже:

inArray(15, [1, 10, 145, 8]) === false;
[23, 674, 4, 12].inArray(4) === true;


Я так понимаю, функция inArray проверяет наличие элемента в выбранном массиве и возвращает true в случае успеха, иначе – false. Как ее написать, чтобы срабатывал первый вызов из примера, мне понятно. Вот так например:

function inArray(value, array) {
  for (var i = 0; i < array.length; i++) {
    if (value === array[i]) {
      return true;
    } 
  }
  return false;
}

inArray(15, [1, 10, 145, 8]); // false


Но как мне ее нужно переписать, чтобы работал и второй вариант вызова?
  • Вопрос задан
  • 1445 просмотров
Решения вопроса 1
DirecTwiX
@DirecTwiX
"display: flex;" уже предлагали?
function inArray(value, array) {
  if (!array)
    array = this;
  for (var i = 0; i < array.length; i++) {
    if (value === array[i]) {
      return true;
    } 
  }
  return false;
}
Array.prototype.inArray = inArray;
console.log([1, 10, 145, 8].inArray(10));
console.log(inArray(100, [1, 10, 145, 8]));
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Array.prototype.inArray = function (item) {return this.indexOf(item) > -1}

Только, патчить глобальные объекты - плохая практика, не стоит этого делать за пределами образовательных проектов.
Ну и вашу функцию стоит переписать на использование indexOf(), ни к чему изобретать велосипед.
Ответ написан
@yogurt1
function inArray(key, arr) {
  return arr.map(i => i === key).length > 0
}
Ответ написан
Комментировать
nikoyar
@nikoyar
Для ES6
function inArray(key, arr) {
  return arr.some((id) => id == key)
}

Можно и просто arr.includes(key), но тут внутри идет строгое сравнение === и можно поиметь проблемы с разными типами данных
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
25 апр. 2024, в 11:49
25000 руб./за проект
25 апр. 2024, в 11:37
40000 руб./за проект