Javascript 如何在数组中重新标记对象?
扩展前面关于JavaScript和jQuery的一个问题,我尝试创建一个数组,然后对其进行研究,但是数组包含维度,我无法正确获取它Javascript 如何在数组中重新标记对象?,javascript,jquery,Javascript,Jquery,扩展前面关于JavaScript和jQuery的一个问题,我尝试创建一个数组,然后对其进行研究,但是数组包含维度,我无法正确获取它 var markers = []; $.getJSON('GetList', "id"= + data.id, function(data){ $.each(data.list, function(index, data) { } markers.push( {
var markers = [];
$.getJSON('GetList', "id"= + data.id,
function(data){
$.each(data.list, function(index, data) {
}
markers.push( {
category:data.category,
id:data.id,
location:{
latitude:data.location.latitude,
longitude:data.location.longitude
}
});
});
});
return markers;
}
首先让我印象深刻的是,现在每个项目都将被称为“对象”,而默认情况下,我仍然想知道是否可以改为标记它们
接下来,我尝试访问id,将其与用户的选择进行比较,
但它不起作用
var selection = $(div_id).val();
var arr = $.inArray(selection, markersArray.id);
if( arr >= 0) {
return search(selection, div_id);
} else {
throw("selection not found in selectionSearch()");
}
我在这里做错了什么?要标记对象,请添加
toString
函数,如下所示:
markers.push({
toString: function () { return this.something; },
category:data.category,
id:data.id,
location:{
latitude:data.location.latitude,
longitude:data.location.longitude
}
});
for(var i = 0; i < markers.length; i++) {
if (markers[i].id === selection)
return search(selection, div_id);
}
throw("selection not found in selectionSearch()");
要搜索数组,您需要自己的循环。jQuery的
$。inArray
函数搜索数组中的精确匹配;它不能用于查找具有匹配属性的对象。您可以自己找到匹配项,如下所示:
markers.push({
toString: function () { return this.something; },
category:data.category,
id:data.id,
location:{
latitude:data.location.latitude,
longitude:data.location.longitude
}
});
for(var i = 0; i < markers.length; i++) {
if (markers[i].id === selection)
return search(selection, div_id);
}
throw("selection not found in selectionSearch()");
for(变量i=0;i
每个项目的类型都是Object,这并不奇怪。没有理由试图改变这一点
要根据项目中的属性从数组中筛选出项目,请使用grep
方法:
var arr = $.grep(markers, function(e){ return e.id === selection; });
要检查数组是否为空,您不需要将数组与数字进行比较,请使用length
属性:
if (arr.length > 0) {
首先-toString示例包含错误(恶意括号?);其次-是否可以只在data.id之后标记对象,并使用$.inArray查找它?好吧,它的工作原理与您所做的一样,没有参数。然而,我遇到了“a是空的”,这是。。。这么大的错误。。。