Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.02.2023, 22:44
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

Логика в JS, не понимаю
Я вот не могу понять эту логику.
Сразу скажу код работает как должен но я просто не могу понять как.

const a = [1, 2, 3]
const b = [1, 2, 3]
const c = [2, 1, 3]

const areArraysEqual = (firstArray, secondArray) => {

    if(firstArray.every((el, ind) => el === secondArray[ind])
    ){
        return true
    }

    return false
}

console.log(areArraysEqual(a, b)) // true
console.log(areArraysEqual(a, c)) // false


Есть два массива я хочу проверить совпадают ли там элементы.
И для этого создаю проверку с помощью метода every где есть два параметра элемента и индекса. Происходит следующее что берется элемент первого массива и сравнивается с элементом второго массива исходя из номера его индекса. И все работает.

Но в моей логике что я взял первый элемент он 1 а индекс второго массива 0 То есть почему идет сравнение элементов если я написал элемент у первого массива а у второго написал индекс, там же разные значения.
Ответить с цитированием
  #2 (permalink)  
Старый 01.02.2023, 23:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от Сергей Ракипов
там же разные значения.
alert(1 === 1)

что не так?
Ответить с цитированием
  #3 (permalink)  
Старый 02.02.2023, 00:27
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

рони,
тут просто тип данных сравнен

а в моем примере сравниваются два массива
const a = [1, 2, 3]
где 1, 2, 3 это элементы у которых индекс 0 1 2

я вижу это сравнение так 1 !== 0 true
Ответить с цитированием
  #4 (permalink)  
Старый 02.02.2023, 00:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сергей Ракипов,
вы когда обратились к массиву по индексу, то получили элемент.
(el, ind) => el === secondArray[ind])
el это firstArray[ind] или
(a[0], 0) => a[0] === b[0] или
(1, 0) => 1 === 1
Ответить с цитированием
  #5 (permalink)  
Старый 02.02.2023, 01:00
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

рони,
вот это что вы написали (a[0], 0) как я понял а это массив [0] это индекс массив а через запятую 0 это что?
Ответить с цитированием
  #6 (permalink)  
Старый 02.02.2023, 01:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сергей Ракипов,
(элемент_массива_под_индекс ом_таким-то, индекс_такой_то)
Ответить с цитированием
  #7 (permalink)  
Старый 02.02.2023, 01:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сергей Ракипов,
есть два дома , есть номера квартир, есть жильцы этих квартир, никто жильца не сравнивает с номером его квартиры, сравнивают жильцов по номеру.
в первом доме, в нулевой комнате живёт единица и во втором доме, в нулевой комнате тоже живёт единица.
Ответить с цитированием
  #8 (permalink)  
Старый 02.02.2023, 01:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сергей Ракипов,
(el, ind) => el === secondArray[ind])
(firstArray[ind] , ind) => firstArray[ind] === secondArray[ind])
(a[0], 0) => a[0] === b[0]
(1, 0) => 1 === 1
все эти строки это одно и тоже для первого шага перебора элементов массива
Ответить с цитированием
  #9 (permalink)  
Старый 02.02.2023, 02:12
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

Я вот сколько лет возвращаясь вновь и вновь освоить JS иногда думаю это не моё.

Я вот так думаю
дом это массив a[1, 2, 3]
номера квартир это а[0 1 2] (то есть индекс для меня номер квартир) (далее я назову это ind)
а жильцы это a[1, 2, 3] (элементы этого массива, то есть они могут быть числа, строки, переменные и т.д.) (далее я назову это el)

И когда мне говорят сравни жильцов двух домов и если они одинаковые выведи тру

a[1, 2, 3]
в[1, 2, 3]

я беру метод every который мне скажет номера домов и кто в них живет (это в параметрах el жилец и ind квартира), то есть индекс 0 1 3 это квартиры и в них живут жильцы 1,2,3 соответственно



И вот из первого дома я имею жильца 1 А из второго дома я беру номер квартиры
И мне говорят это одинаково или тру
А у меня не доумение ну как же так это же вообще нельзя сравнивать.
Ответить с цитированием
  #10 (permalink)  
Старый 02.02.2023, 09:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от Сергей Ракипов
И вот из первого дома я имею жильца 1 А из второго дома я беру номер квартиры
и берёте жильца по номеру квартиры
Цитата:
Мы можем получить элемент, указав его номер в квадратных скобках:
читать тут
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Диалог между HTML и внешним JS в контексте расширения GoogleChrome ev1lart Events/DOM/Window 0 26.04.2017 19:25
BackEnd/FrontEnd Developer (Native JS) Abab Работа 0 25.12.2016 10:56
js стиль render для react.js vflash Ваши сайты и скрипты 5 01.04.2016 22:57
Вставка кода js с помощью js Alice Общие вопросы Javascript 1 12.06.2013 19:05
Картинка обрабатывается js 4yBaK Общие вопросы Javascript 10 11.09.2011 09:28