【发布时间】:2015-05-23 16:07:18
【问题描述】:
我是 JavaScript 的初学者。最近我正在尝试在 Google Map 中开发关联应用程序。但是我遇到了一个奇怪的问题。
请参考下面的代码。
<html>
<head>
<script src = "http://maps.googleapis.com/maps/api/js"></script>
</head>
<body>
<script>
var buf = [];
var pos1 = new google.maps.LatLng(1, 2); buf.push(pos1);
var pos2 = new google.maps.LatLng(3, 4); buf.push(pos2);
var pos3 = new google.maps.LatLng(5, 6); buf.push(pos3);
//initialize a new object here
var pos4 = new google.maps.LatLng(3, 4);
if ( buf.indexOf(pos4) != -1 )
document.write("yes");
else
document.write("no");
</script>
<body>
</html>
由于pos4 的值与pos2 相同,如果数组中位置确实存在,则打印结果应为“是”。 但是它在屏幕上打印了“否”。
我尝试打印出pos4 和pos2 的值。我发现两者都是一样的,我不知道为什么这个检查失败了。 有什么办法可以解决问题吗?
【问题讨论】:
-
两个不同的对象即使拥有相同的数据也将无法通过相等性测试。例如
var a = {test: 1}, b = {test: 1}; alert(a == b);将导致false。您需要测试对象中primitive data 的相等性。在您的示例中,这意味着测试纬度和经度是否相等。
标签: javascript html arrays google-maps-api-3