Я сохраняю (x, y) координаты как 2-элементные массивы.В Javascript, почему [1,2] == [1,2] разрешено false?
var coordinateA = [0,3];
var coordinateB = [1,2];
Я также имеют более длинный массив, содержащий многие из этих координат:
var coordinates = [coordinateA, coordinateB]
Представьте себе мое удивление, когда следующие утверждения оказались ложными:
jQuery.inArray(coordinateA, coordinates); // returns -1
coordinateA == coordinates[0]; // returns false
[0,3] == [0,3]; // returns false(!)
coordinateA == coordinateA; // returns true, thankfully
Может кто-нибудь мне помочь понять, почему это так? Кроме того, есть ли лучший способ представить 2D-координаты в Javascript? Спасибо за любые подсказки или предложения.
См [этот вопрос] (http://stackoverflow.com/questions/4700085/can-i-define-custom-operator-overloads-in-javascript) для альтернативного –
сравнения двух объектов определяет, если они являются одним и тем же объектом, контент не сравнивается. – Teemu
На самом деле, если вы установите массив координат так, как вы описали, он должен работать так, как вы ожидаете (элемент в координатах [0] 'и' coordAA * shoud * указывает на ту же память). У меня есть чувство, что проблема находится где-то в другом месте или зависит от браузера (только что подтвердил, что он работает так, как ожидалось, в хроме) – JCOC611