Array.includes() в JavaScript — чи є значення в масиві
Опис
Коли вам потрібно перевірити, чи існує певний елемент у масиві, JavaScript надає метод під назвою includes(). З його допомогою ви можете ефективно визначити наявність елемента в масиві без необхідності перебирати всі його елементи.
Приклад:
let fruits = ["apple", "banana", "cherry"];
let exists = fruits.includes("banana");
console.log(exists); // true
У цьому прикладі ми перевіряємо, чи існує banana в масиві fruits. Метод includes() повертає true, підтверджуючи його наявність.
Метод includes() проводить порівняння елемента searchElement з іншими елементами масиву, використовуючи специфічний алгоритм порівняння - SameValueZero, який відрізняється від строгої рівності. Цей алгоритм вважає NaN рівним самому собі і -0 рівним 0, що часто є більш логічним при пошуку значень. Він використовується в методах як Array.prototype.includes(), так і TypedArray.prototype.includes(), а також в структурах Map та Set.
Загальний опис
автор: NagarD
- Нотатка
-
Метод
автор: Bondincludes()приймає другий необов'язковий параметрfromIndex, який вказує початковий індекс для пошуку елемента. По замовчуванню, пошук починається з початку масиву. Ви можете вказати інший початковий індекс, наприклад,myArray.includes(3, 2), щоб почати пошук елемента з індексу 2. - Нотатка
-
Зверніть увагу, що метод
автор: Bondincludes()використовує строге порівняння (===) для перевірки наявності елемента у масиві. Це означає, що не тільки значення, але й типи даних повинні співпадати. Наприклад, якщо масив містить рядковий елемент '5',myArray.includes(5)повернеfalse, оскільки порівнювані значення мають різні типи. - Нотатка
-
автор: Bondincludes()є універсальним методом, що вимагає, щоб об'єктthisмав властивістьlengthі інші цілочисельні властивості. - Нотатка
-
Якщо розглядати розріджені масиви,
автор: Bondincludes()сприймає порожні слоти так, наче вони мають значенняundefined.
Синтаксис
includes(searchElement)
includes(searchElement, fromIndex)
Параметри
searchElement-
Значення, яке потрібно знайти у масиві.
автор: Bond fromIndex-
Індекс, з якого розпочинається пошук, конвертований у ціле число.
- Від'ємний індекс рахується з кінця масиву - якщо
fromIndex < 0, використовуєтьсяfromIndex + array.length. Однак, незважаючи на це, масив все ще проглядається з переду назад. - Якщо
fromIndex < -array.lengthабоfromIndexне визначено, використовується 0 (спричинює пошук по всьому масиву). - Якщо
fromIndex >= array.length, масив не проглядається, і повертаєтьсяfalse.
- Від'ємний індекс рахується з кінця масиву - якщо
Повернення
bool-
Булеве значення, яке дорівнює
автор: Bondtrue, якщо значенняsearchElementзнайдено у масиві (або у частині масиву, вказаній індексомfromIndex).
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| 47 | 43 | 9 | 34 | 14 | — |
| Переглядач | ||||
|---|---|---|---|---|
| 47 | 47 | 43 | 9 |
| Переглядач | ||
|---|---|---|
| 6.0.0 | 1.0 |
Приклади
+ запропонувати свій приклад у пісочниці
Використання includes() на розріджених масивах.
console.log([1, , 3].includes(undefined)); // true
Приклад демонструє використання методу includes() для перевірки присутності елемента в масиві. Показано, як перевірити наявність числового елемента та рядкового елемента в масиві.
HTML
<header>
<h2 class="title">includes() - Перевірка присутності елемента в масиві</h2>
<p class="description">Метод includes() використовується для перевірки чи містить масив заданий елемент.</p>
</header>
<main>
<div>
<h3>Приклад 1</h3>
<p>Масив: [1, 2, 3]</p>
<p>Вивід результату (наявність ел. "2"): <span id="result1"></span></p>
</div>
<div>
<h3>Приклад 2</h3>
<p>Масив: ['cat', 'dog', 'bat']</p>
<p>Вивід результатунаявність ел. "cat": <span id="result2"></span></p>
</div>
<div>
<h3>Приклад 3</h3>
<p>Масив: ['cat', 'dog', 'bat']</p>
<p>Вивід результатунаявність ел. "at": <span id="result3"></span></p>
</div>
</main>
CSS
body {
font-size: 16px;
line-height: 1.5;
font-family: monospace;
}
header {
background-color: #f1f1f1;
margin-bottom: 25px;
padding: 15px;
-webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
-moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}
header h2.title {
padding-bottom: 15px;
border-bottom: 1px solid #999;
}
header p.description {
font-style: italic;
color: #222;
}
main div {
margin-bottom: 20px;
}
main h3 {
margin-bottom: 10px;
}
main p {
margin-bottom: 5px;
}
main span {
font-weight: bold;
}
JS
const array1 = [1, 2, 3];
document.getElementById('result1').textContent = array1.includes(2); // Очікуваний результат: true
const pets = ['cat', 'dog', 'bat'];
document.getElementById('result2').textContent = pets.includes('cat'); // Очікуваний результат: true
document.getElementById('result3').textContent = pets.includes('at'); // Очікуваний результат: false
//# sourceURL=pen.js
console.log([1, 2, 3].includes(2)); // → true
console.log([1, 2, 3].includes(4)); // → false
console.log([1, 2, 3].includes(3, 3)); // → false
console.log([1, 2, 3].includes(3, -1)); // → true
console.log([1, 2, NaN].includes(NaN)); // → true
console.log(["1", "2", "3"].includes(3)); // → false
Чому includes() не знаходить однаковий на вигляд об'єкт і в чому він розходиться з [[js/object/Array/method/indexOf]].
const ids = [1, 2, 3];
console.log('є 2:', ids.includes(2)); // true
console.log("є '2':", ids.includes('2')); // false — жодних перетворень типу
// об'єкти порівнюються за посиланням
const users = [{ id: 1 }, { id: 2 }];
console.log('includes({id: 2}):', users.includes({ id: 2 })); // false
console.log('some(u => u.id === 2):', users.some(u => u.id === 2)); // true
// NaN: includes знаходить, indexOf — ні
console.log('NaN:', [NaN].includes(NaN), [NaN].indexOf(NaN)); // true -1
// порожній слот includes бачить як undefined
const sparse = [, 1];
console.log('дірка:', sparse.includes(undefined), sparse.indexOf(undefined)); // true -1
// з другого індексу
console.log("includes('a', 1):", ['a', 'b', 'a'].includes('a', 1)); // true
Метод includes() можна використовувати на об'єктах, що не є масивами. Він зчитує властивість length цього об'єкта, а потім отримує доступ до кожної властивості, ключ якої є невід'ємним цілим числом, меншим за length.
const arrayLike = {
length: 3,
0: 2,
1: 3,
2: 4,
3: 1, // проігноровано методом includes(), оскільки length дорівнює 3
};
console.log(Array.prototype.includes.call(arrayLike, 2));
// true
console.log(Array.prototype.includes.call(arrayLike, 1));
// false
Коментарі
Коментарів ще немає — будьте першим!