Почему при == показывает false, а не true?
Потому что объекты (а массив - это тоже объект) сравниваются не поэлементно. Сравниваются ссылки на объекты, а они разные, даже если содержимое объектов абсолютно одинаковое.
1 == 1 // true
[1] == [1] // false
Потому-что массив это объект, а как мы знаем при сравнении объектов проверяются их ссылки. В данном случае объекты ссылаются на разные ячейки памяти.