【发布时间】:2016-05-19 20:51:23
【问题描述】:
我将 (x,y) 坐标存储为 2 元素数组。
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
有人能帮我理解为什么会这样吗?另外,有没有更好的方法在 Javascript 中表示 2D 坐标?感谢您提供任何线索或建议。
【问题讨论】:
-
查看this question 了解替代方案
-
比较两个对象判断是否是同一个对象,不比较内容。
-
其实,如果按照您描述的方式设置坐标数组,它应该可以按预期工作(
coordinates[0]和coordinateA处的元素 应该 指向相同的记忆)。我感觉问题出在其他地方,或者取决于浏览器(刚刚确认它在 chrome 中按预期工作) -
将 JS 中的引用视为指针。如果你有 2 个
char* a, *b,你会将其内容与a == b进行比较吗?
标签: javascript