Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在数组中重新标记对象?_Javascript_Jquery - Fatal编程技术网

Javascript 如何在数组中重新标记对象?

Javascript 如何在数组中重新标记对象?,javascript,jquery,Javascript,Jquery,扩展前面关于JavaScript和jQuery的一个问题,我尝试创建一个数组,然后对其进行研究,但是数组包含维度,我无法正确获取它 var markers = []; $.getJSON('GetList', "id"= + data.id, function(data){ $.each(data.list, function(index, data) { } markers.push( {

扩展前面关于JavaScript和jQuery的一个问题,我尝试创建一个数组,然后对其进行研究,但是数组包含维度,我无法正确获取它

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是空的”,这是。。。这么大的错误。。。