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

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

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

fightResolve('a','S')
  • Вопрос задан
  • 138 просмотров
Решения вопроса 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')
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы