Метод foreach
Принимает 3 параметра: элемент, индекс и сам массив.
let arr = ["Один", "Два", "Три", "Четыре"];
arr.forEach((element, index, arr) => console.log(element));
Метод filter
Принимает 3 параметра и возвращает новый массив по результатам работы функции колбека
let arr = ["Один", "Два", "Три", "Четыре"];
let newArr = arr.filter((element) => element == "Один");
console.log(newArr);
Метод map
Позволяет создать новый массив по результатам работы функции callback
let arr = ["Один", "Два", "Три", "Четыре"];
let newArr = arr.map((element) => element = "new element: " + element);
console.log(newArr);
Метод reduce
Позволяет развернуть массив или преобрабразовать в другую сущность. Первым значением в callback передается переменная-аккумулятор, которая хранит результаты всех вызовов
let arr = ["Один", "Два", "Три", "Четыре"];
let newArr = arr.reduce((acc, element) => acc= acc + element);
console.log(newArr);
Метод some
Возаращает true если хоть один из элемента массива соответствует условию в callback
let arr = ["Один", "Два", "Три", "Четыре"];
let newArr = arr.some( (element) => element == "Два");
console.log(newArr);
Метод every
Возаращает true если все элементы массива соответствует условию в callback
let arr = ["Один", "Два", "Три", "Четыре"];
let newArr = arr.every( (element) => element == "Два");
console.log(newArr);
Метод find
Позволяет найти элемент в массиве
let arr = ["Один", "Два", "Три", "Четыре"];
let newArr = arr.find( (element, index) => index == 3);
console.log(newArr);
Метод sort
Используется для сортировки массива. Изменяет исходный массив, а также по умолчанию сортирует массив как строки.
let arr = ["Один", "Два", "Три", "Четыре"];
let newArr = arr.sort();
console.log(newArr);
Получим ["Два", "Один", "Три", "Четыре"]
let arr = [7, 10, 30, 55];
let newArr = arr.sort();
console.log(newArr);
Получим [10, 30, 55, 7]
Для сортировки в виде цифр необходимо передать callback
let arr = [7, 10, 30, 55];
let newArr = arr.sort((next, prev) => next - prev);
console.log(newArr);
Получим правильный результат [7, 10, 30, 55]
Задачи по методам массивов
- На основе массива [1,2,3,5,8,9,10] сформировать новый массив,
каждый элемент которого будет хранить информацию о числе и его четности:
[{digit: 1, odd: true}, {digit: 2, odd: false}, {digit: 3, odd: true}...]
let arr = [1,2,3,5,8,9,10];
let newArr = arr.map((elem) => elem = {digit: elem, odd: Boolean(elem % 2)});
console.log(newArr);
- Проверить, содержит ли массив [12, 4, 50, 1, 0, 18, 40] элементы, равные нулю. Если да - вернуть true.
let arr = [12, 4, 50, 1, 0, 18, 40];
let newArr = arr.some((elem) => elem === 0);
console.log(newArr);
- Проверить, все элементы массива имеют длину более 3х символов ['yes', 'hello', 'no', 'easycode', 'what']. Если да - вернуть true
let arr = ['yes', 'hello', 'no', 'easycode', 'what'];
let newArr = arr.some((elem) => elem.length > 3);
console.log(newArr);
- Дан массив объектов, где каждый объект содержит информацию о букве и месте её положения в строке {буква: “a”, позиция_в_предложении: 1}:
[{char:"a",index:12}, {char:"w",index:8}, {char:"Y",index:10}, {char:"p",index:3}, {char:"p",index:2},
{char:"N",index:6}, {char:" ",index:5}, {char:"y",index:4}, {char:"r",index:13}, {char:"H",index:0},
{char:"e",index:11}, {char:"a",index:1}, {char:" ",index:9}, {char:"!",index:14}, {char:"e",index:7}]
Напишите функцию, которая из элементов массива соберет и вернёт
строку, основываясь на index каждой буквы. Например:
[{char:"H",index:0}, {char:"i",index: 1}, {char:"!",index:2}] → “Hi!”
et arr = [{char:"a",index:12}, {char:"w",index:8}, {char:"Y",index:10}, {char:"p",index:3}, {char:"p",index:2},
{char:"N",index:6}, {char:" ",index:5}, {char:"y",index:4}, {char:"r",index:13}, {char:"H",index:0},
{char:"e",index:11}, {char:"a",index:1}, {char:" ",index:9}, {char:"!",index:14}, {char:"e",index:7}];
let newArr = arr.sort((prev, next) => prev.index - next.index).reduce((acc, elem) => acc += elem.char, '' );
console.log(newArr);
- Отсортируйте массив массивов так, чтобы вначале располагались наименьшие массивы (размер массива определяется его длиной): [ [14, 45], [1], ['a', 'c', 'd'] ] → [ [1], [14, 45], ['a', 'c', 'd'] ]
let arr = [ [14, 45], [1], ['a', 'c', 'd'] ];
let newArr = arr.sort((prev, next) => prev.length - next.length);
console.log(newArr);
- Есть массив объектов:
[
{cpu: 'intel', info: {cores:2, сache: 3}},
{cpu: 'intel', info: {cores:4, сache: 4}},
{cpu: 'amd', info: {cores:1, сache: 1}},
{cpu: 'intel', info: {cores:3, сache: 2}},
{cpu: 'amd', info: {cores:4, сache: 2}}
]
Отсортировать их по возрастающему количеству ядер (cores).
let arr = [
{cpu: 'intel', info: {cores:2, сache: 3}},
{cpu: 'intel', info: {cores:4, сache: 4}},
{cpu: 'amd', info: {cores:1, сache: 1}},
{cpu: 'intel', info: {cores:3, сache: 2}},
{cpu: 'amd', info: {cores:4, сache: 2}}
];
let newArr = arr.sort((prev, next) => prev.info.cores - next.info.cores);
console.log(newArr);
- Создать функцию, которая будет принимать массив продуктов и две цены. Функция должна вернуть все продукты, цена которых находится в указанном диапазоне, и сортировать от дешевых к дорогим:
let products = [
{title: 'prod1', price: 5.2}, {title: 'prod2', price: 0.18},
{title: 'prod3', price: 15}, {title: 'prod4', price: 25},
{title: 'prod5', price: 18.9}, {title: 'prod6', price: 8},
{title: 'prod7', price: 19}, {title: 'prod8', price: 63}
];
filterCollection(products, 15, 30) → [{...price: 15}, {...price: 18.9}, {...price: 19}, {...price: 25}]
let products = [
{title: 'prod1', price: 5.2}, {title: 'prod2', price: 0.18},
{title: 'prod3', price: 15}, {title: 'prod4', price: 25},
{title: 'prod5', price: 18.9}, {title: 'prod6', price: 8},
{title: 'prod7', price: 19}, {title: 'prod8', price: 63}
];
function filterCollection(products, min, max)
{
return products.filter((element) => element.price > min && element.price < max).sort((prev, next) => prev.price - next.price);
}
console.log(filterCollection(products, 15, 30));