Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.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_Arrays_Object - Fatal编程技术网

按公共值对javascript对象进行分组

按公共值对javascript对象进行分组,javascript,arrays,object,Javascript,Arrays,Object,我有一个DB查询,它从我的DB返回一堆基于位置的数据。最后我得到了一个对象列表(我将其放入一个对象中,并通过console.log()查看其中的内容) 每个对象表示用户的一个条目,其中包含有关位置的注释: 它包含:商店名称、地址、用户ID、备注 所以很多人可以参观这个地方,写不同的笔记。我想做的是将位置放在谷歌地图(JSAPI)上,并按位置分组,因此当单击标记时,它包含该位置的所有注释 因此,我考虑将address返回的对象分组,然后为每个地址绘制标记并循环 for (var i = 0; i

我有一个DB查询,它从我的DB返回一堆基于位置的数据。最后我得到了一个对象列表(我将其放入一个对象中,并通过console.log()查看其中的内容)

每个对象表示用户的一个条目,其中包含有关位置的注释:

它包含:商店名称、地址、用户ID、备注

所以很多人可以参观这个地方,写不同的笔记。我想做的是将位置放在谷歌地图(JSAPI)上,并按位置分组,因此当单击标记时,它包含该位置的所有注释

因此,我考虑将address返回的对象分组,然后为每个地址绘制标记并循环

for (var i = 0; i < rowCountVisits; i++) {
    var storelatlng = new google.maps.LatLng(
    parseFloat(result[2].latVisit[i]),
    parseFloat(result[2].lngVisit[i]));
    locationsObjVisits.push({
        storelatlng: storelatlng,
        vName: result[2].vName[i],
        address: result[2].locationVisit[i],
        date: result[2].dateVisit[i],
        notes: result[2].notes[i],
        usersName: result[2].user.thisName[i],
        thisColour: result[2].user.thisColour[i]
    });
}
for(变量i=0;i

所以我们的位置是。。。我不知道该怎么办。有什么想法吗?

我会将
位置sobjvists
存储在具有数组属性的对象中,使用地址作为键。因此:

var locationsObjs = {};

for (var i = 0; i < rowCountVisits; i++) {
    var storelatlng = new google.maps.LatLng(
    parseFloat(result[2].latVisit[i]),
    parseFloat(result[2].lngVisit[i]));
    var address = result[2].locationVisit[i];

    locationsObjs[address] = locationsObjs[address] || [];
    locationObjs[address].push({
        storelatlng: storelatlng,
        vName: result[2].vName[i],
        address: address,
        date: result[2].dateVisit[i],
        notes: result[2].notes[i],
        usersName: result[2].user.thisName[i],
        thisColour: result[2].user.thisColour[i]
    });
}

这正是我想要的,但有一个小问题。它确实按地址对数组进行分组,但locationsObj的每个子数组都包含从服务器返回的每个对象,它不仅包括具有匹配地址的对象。。。你知道我的意思吗?是的,就是这样!谢谢你,伙计!不会想到做那样的事,很优雅的解决方案
for(var address in locationsObjs)
    if(locationsObjs.hasOwnProperty(address))
        // Plot marker using the address.