@Banjamin
Изучаю веб разработку

В чем различие массивов?

Добрый день. Объясните пожалуйста, почему в консоли выводиться false?
fightResolve = (a, b) =>{
  const arr = [a.toLowerCase(),b.toLowerCase()]
  console.log(arr === ['a','s'])
}	

fightResolve('a','S')
  • Вопрос задан
  • 133 просмотра
Решения вопроса 3
@andreysuha
Что то знаю
В js если сравнивать не примитивы, то он смотрит на ячейки в памяти если, а не на значения. Т.е если вы сравнивание два объекта то равенство получите только если один из них является ссылкой на второй. Как пример попробуйте вывести в консоль {} === {}
Ответ написан
locky_yotun
@locky_yotun Куратор тега JavaScript
Я видел некоторый джаваскрипт
Объекты (к которым относятся также и массивы) в JS сравниваются (и передаются) по ссылке, а не по значению.
Подробнее тут https://learn.javascript.ru/object-reference

P.S. Конкретно для вашего кейса можно привести оба сравниваемых массива к строке, но вообще существует достаточно реализаций функции типа "deepEqual" для сравнения любых объектов
Ответ написан
svistiboshka
@svistiboshka
живые веб интерфейсы
fightResolve = (a, b) =>{
  const arr = [a.toLowerCase(),b.toLowerCase()]
  console.log(arr.join() === ['a','s'].join())
}	

fightResolve('a','S')

либо так более универсально
fightResolve = (arr1, arr2) => {
  return JSON.stringify(arr1).toLowerCase() === JSON.stringify(arr2).toLowerCase()
}

console.log(fightResolve(['a,b'], ['a', 'b']))
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
GreyCrew
@GreyCrew
Full-stack developer
Потому, что массивы надо сравнивать поэлементно.
function isEquals(arr, arr2){
    if(arr.length != arr2.length) return false
    var on = 0;
    for( var i = 0; i < arr.length; i++ ){
        for( var j = 0; j < arr2.length; j++ ){
            if(arr[i] === arr2[j]){
                on++
                break
            }
        }
    }
    return on==arr.length ? true : false
}

fightResolve = (a, b) =>{
  const arr = [a.toLowerCase(),b.toLowerCase()]
  console.log(isEquals(arr, ['a','s']))
}	
fightResolve('a','S')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 110 000 до 150 000 руб.
Александрия Москва
от 200 000 до 250 000 руб.
Foodtronics Москва
от 100 000 до 200 000 руб.