JS Tower
JavaScript & TypeScriptМодуль 4: Массивы и объекты

Дополнительные методы

flat, includes, indexOf, slice и другие

Цель урока

В этом уроке ты научишься:

  • Проверять наличие элементов
  • Извлекать части массива
  • Работать с вложенными массивами

Проверка наличия

includes

let fruits = ["яблоко", "банан", "апельсин"];

console.log(fruits.includes("банан"));  // true
console.log(fruits.includes("груша"));  // false

// С позиции
console.log(fruits.includes("яблоко", 1)); // false

indexOf и lastIndexOf

let fruits = ["яблоко", "банан", "яблоко", "апельсин"];

console.log(fruits.indexOf("яблоко"));     // 0
console.log(fruits.lastIndexOf("яблоко")); // 2
console.log(fruits.indexOf("груша"));      // -1

Извлечение части

slice

Не изменяет исходный массив:

let fruits = ["яблоко", "банан", "апельсин", "киви"];

console.log(fruits.slice(1, 3));  // ["банан", "апельсин"]
console.log(fruits.slice(2));     // ["апельсин", "киви"]
console.log(fruits.slice(-2));    // ["апельсин", "киви"]
console.log(fruits.slice());      // копия массива

Объединение

concat

let arr1 = [1, 2];
let arr2 = [3, 4];
let arr3 = [5, 6];

let combined = arr1.concat(arr2, arr3);
console.log(combined); // [1, 2, 3, 4, 5, 6]

// С отдельными элементами
let result = arr1.concat(3, 4);
console.log(result); // [1, 2, 3, 4]

Преобразование в строку

join

let fruits = ["яблоко", "банан", "апельсин"];

console.log(fruits.join(", "));  // "яблоко, банан, апельсин"
console.log(fruits.join(" - ")); // "яблоко - банан - апельсин"
console.log(fruits.join(""));    // "яблокобананапельсин"

Плоские массивы

flat

let nested = [1, [2, 3], [4, [5, 6]]];

console.log(nested.flat());    // [1, 2, 3, 4, [5, 6]]
console.log(nested.flat(2));   // [1, 2, 3, 4, 5, 6]
console.log(nested.flat(Infinity)); // полностью плоский

flatMap

let sentences = ["Привет мир", "Как дела"];

let words = sentences.flatMap(s => s.split(" "));
console.log(words); // ["Привет", "мир", "Как", "дела"]

Создание массивов

Array.from

// Из строки
console.log(Array.from("abc")); // ["a", "b", "c"]

// Из Set
let set = new Set([1, 2, 3]);
console.log(Array.from(set)); // [1, 2, 3]

// С функцией
console.log(Array.from({ length: 5 }, (_, i) => i * 2));
// [0, 2, 4, 6, 8]

Array.of

console.log(Array.of(1, 2, 3)); // [1, 2, 3]
console.log(Array.of(5));       // [5]

// Сравни с new Array
console.log(new Array(5)); // [empty × 5]

Практика

Задание 1: Проверка

Задача: Проверь, есть ли число 5 в массиве.

Запустите код для проверки
Loading...
Ваш вывод:
Ожидаемый результат:
true

Задание 2: Копирование

Задача: Скопируй первые 3 элемента массива.

Запустите код для проверки
Loading...
Ваш вывод:
Ожидаемый результат:
["a","b","c"]

Задание 3: Выравнивание

Задача: Преобразуй вложенный массив в плоский.

Запустите код для проверки
Loading...
Ваш вывод:
Ожидаемый результат:
[1,2,3,4,5,6]

Проверь себя

  1. Чем slice отличается от splice?
  2. Что вернёт indexOf, если элемент не найден?
  3. Как создать массив чисел от 1 до 10?