День 10, 11 и 12 #100DaysOfCode

Сегодня 12-й день моего #100DaysOfCode путешествия с JavaScript.

Я пишу о своих знаниях в объясненной форме через свои блоги и социальные сети. Если вы хотите присоединиться ко мне в учебном путешествии, обязательно следите за моими блогами и социальными сетями, а также делитесь своими. Давайте учиться вместе!🫱🏼‍🫲🏼

Эта статья является частью серии Основы JavaScript.

Массивы

В JavaScript мы используем массивы для хранения списка элементов. Массив начинается с открытой квадратной скобки [ и заканчивается закрытой квадратной скобкой ]. Элементы внутри массива разделяются запятой ,.

const numbers = [1, 2, 3, 4];
const booleans = [true, false, true];
const strings = ["happy", "laugh"];

Массивы изменяемы, то есть их можно изменить. В JavaScript массивы являются объектами и могут содержать несколько значений под одним именем. Массивы могут храниться в массивах, называемых вложенными массивами.

const nested = [[2, 3, [2, 3]], 3];

Пока мы перебираем массив, мы можем сохранить текущее значение. Мы можем сделать это по разным причинам. Если бы мы хотели определить среднее значение нескольких чисел.👇🏼

const result = average([80,90,98,100]); 
console.log( result ); // 92

Пример. Учитывая массив, найдите сумму всех четных значений внутри массива и верните ее.

function sumEven(array) {
    let sum = 0;
    for(let i = 0; i < array.length; i++){
        if(array[i] % 2 === 0){
            sum = sum + array[i]
}
    }
    return sum;
}

Индексация массива

Массивы имеют индексы, отсчитываемые от нуля, как и строки. Это означает, что первый элемент массива имеет индекс 0, затем 1:

const element = array[0];

Пример. Завершите функцию hasOne, которая принимает массив чисел. Возвратите true, если любое из чисел в array равно 1. Верните false, если нет.

function hasOne(array) {
    for(let i=0; i<array.length; i++){
        if(array[i] === 1){
            return true;
        }
    }
    return false;
}

Вернуть новый массив

При формулировании функции для фильтрации массива мы можем создать новый массив и вставлять туда элементы всякий раз, когда они удовлетворяют нашему условию.

Давайте представим, что мы хотим ограничить числа, которые возвращает массив, теми, которые больше 4:

function greaterThanFour(array) {
    const newArray = [];
    for(let i = 0; i < array.length; i++) {
        const element = array[i];
        // is this element greater than 4?
        if(element > 4) {
            // yes, push this element on our array
            newArray.push(element);
        }
    }
    return newArray;
}

Здесь мы создаем новый массив и добавляем в него элементы из array, только если они больше 4 в нашем newArray. Затем возвращается новый массив. Метод push добавляет в массив новые элементы.

Пример. Напишите функцию, которая будет принимать массив чисел и возвращать новый массив, содержащий только уникальные числа.

function unique(array) {
    let newArray = [];
    for(let i = 0; i < array.length; i++) {
        const element = array[i];
        if (newArray.indexOf(element) === -1) {
// indexOf method was learned in previous tutorial
            newArray.push(element);
        }
    }
    return newArray;
}

Изменить значения массива

Используя квадратные скобки, такие как array[0], мы научились читать значения из массивов. Точно так же мы можем использовать оператор присваивания =, чтобы присвоить этим местам новые значения.

const array = [1,2,3];
array[0] = 6;
console.log(array); // [6,2,3]

Пример. Выполните функцию addOne, чтобы добавить 1 к каждому элементу массива. Поскольку мы изменяем массив напрямую, не возвращайте его.

function addOne(array) {
    for(let i = 0; i < array.length; i++) {
        array[i]++;
    }
}

Изменить массив

Давайте изменим массив, чтобы отфильтровать его! Метод splice используется для удаления элементов из массива. Давайте используем splice для удаления элементов, которые больше 1:

const array = [1,2,3];
for(let i = 0; i < array.length; i++) {
    if(array[i] > 1) {
        array.splice(i, 1);
    }
}
console.log(array); // [1, 3]

// This is a Bug🐛

Вам должно быть интересно, почему console.log показывает 1 и 3 даже после объединения элементов больше 1. Давайте посмотрим:

Итерация 1: индекс указывает на элемент 1. Мы не соединяем 1, потому что оно не больше 1. Работает отлично! i=0

Итерация 2: мы обнаруживаем, что 2 больше, чем 1, поэтому мы выполняем сращивание по индексу 1. Работает отлично! i=1

Конечная итерация: длина массива 2 и i=2. Условие цикла состоит в том, что i < array.length, поэтому в этой точке дальнейших итераций нет. Мы никогда не удаляли 3!

  • Исправить🔥

Считая в обратном порядке.

const array = [1,2,3];
for(let i = array.length - 1; i >= 0; i--) {
    if(array[i] > 1) {
        array.splice(i, 1);
    }
}
console.log(array); // [1]

Итерация 1. Начиная с конца, мы удаляем 3, поскольку оно больше, чем 1 . Работает отлично! i=2

Итерация 2: давайте переместим индекс i в 1 . 2 будет удален путем объединения по индексу 1 . Работает отлично! i=1

Конечная итерация: 1 не больше, чем 1, поэтому мы не объединяем его. Как и ожидалось, в нашем массиве осталось [1]!

Заключение

В завершение немного информации о функциях JavaScript…

JavaScript не волнует, изменяем ли мы значение внутри структуры данных, когда слово const используется с объектом или массивом. Массивы — это объекты, поэтому вы также можете включать массивы при обсуждении характеристик объекта.

Сегодня я узнал о массивах в JavaScript.

Если вы ❤️ мой контент! Присоединяйтесь ко мне в Твиттере или поддержите меня, Купив мне кофе☕