我有一个Ajax请求,返回数字类型的纬度/经度坐标。JavaScript JQuery - 两个数组之间的隐式比较
对于每个响应,我需要检查每个返回的值是否在数组中,如果没有添加它。继承人是我到目前为止有:
$.each(jqXHR.responseJSON, function (index, value) {
if($.inArray([value.loc.coordinates[1],value.loc.coordinates[0]], settings.locations) === -1){
console.log('adding...');
settings.locations.push([value.loc.coordinates[1], value.loc.coordinates[0]]);
} else {
console.log('already have...');
}
});
测试显示,比较总是失败,甚至当它已经seettings.locations内的附加值。任何人都可以提出问题出在哪里?
UPDATE:行,所以感谢评论到目前为止我可以看到,这是不正确的使用inArray的。下面我现在有:
$.each(jqXHR.responseJSON, function (index, value) {
$.each(settings.locations, function(key, cValue) {
if(value.loc.coordinates[1]+','+value.loc.coordinates[0] !== cValue){
console.log('Adding new coords..')
settings.locations.push([value.loc.coordinates[1], value.loc.coordinates[0]]);
} else {
console.log('Already have: ' +cValue);
}
});
});
再次,这些永远不会评估匹配,因此它下降到一个无限循环。
不能使用'$ .inArray()'来一次寻找两个坐标。它根本不会那样工作。它只查找一个必须与整个数组元素匹配才能找到的单个项目。您将需要编写自己的循环来搜索数组。 – jfriend00 2014-09-20 18:07:51