for循环中特定元素上的Javascript数组组
我目前有一些代码显示一些基于MySQL查询的html。在我当前的查询中,我只选择带有for循环中特定元素上的Javascript数组组,javascript,mysql,arrays,for-loop,Javascript,Mysql,Arrays,For Loop,我目前有一些代码显示一些基于MySQL查询的html。在我当前的查询中,我只选择带有MAX(ID)(每个数组元素中的第一项)的不同行。我现在希望扩展它,我的阵列现在看起来如下: var fullcheckins = [["3835","101 Pub","40.8684","-74.0223"], ["2182","101 Pub","40.8684","-74.0223"], ["2181","101 Pub","
MAX(ID)
(每个数组元素中的第一项)的不同行。我现在希望扩展它,我的阵列现在看起来如下:
var fullcheckins = [["3835","101 Pub","40.8684","-74.0223"],
["2182","101 Pub","40.8684","-74.0223"],
["2181","101 Pub","40.8684","-74.0223"],
["1574","101 Pub","40.8684","-74.0223"],
["1573","101 Pub","40.8684","-74.0223"],
["1572","101 Pub","40.8684","-74.0223"],
["1269","101 Pub","40.8684","-74.0223"],
["1230","101 Pub","40.8684","-74.0223"],
["221","101 Pub","40.8684","-74.0223"],
["220","101 Pub","40.8684","-74.0223"],
["697","113th St. Beach, LBI","39.5938","-74.2145"],
["2838","14th Star Brewery and Taproom","44.8145","-73.0817"],
["2844","14th Star Brewing Co","44.8201","-73.0854"],
["2842","14th Star Brewing Co","44.8201","-73.0854"],
["2841","14th Star Brewing Co","44.8201","-73.0854"],
["2840","14th Star Brewing Co","44.8201","-73.0854"]];
我想要的是某种方式来分隔每一行,其中fullcheckins中的每个元素都是相同的,并将它们分组在一起。如果有帮助的话,数组是有序的。以下是我所期待的:
for (var i = 0; i < checkins.length; i++) {
var checkin = checkins[i];
var htmlscript = '<div id="slideShowImages">'
for each time checkin[2] is the same:
htmlscript += '<img src="pictures/'+checkin[0]+'.jpg"/>'
htmlscript += '</div>'
有什么办法可以做到这一点吗?我相信这就是你要找的 1) 首先构建一个结果对象,跟踪每个事件的id 2) 现在我们有了一个索引映射到ID的对象 3) 对于每一个,编写相应的html
var结果={}
var fullcheckins=[
[“3835”、“101酒吧”、“40.8684”、“-74.0223”],
[“2182”、“101 Pub”、“40.8684”、“-74.0223”],
[“2181”、“101 Pub”、“40.8684”、“-74.0223”],
[“1574”、“101酒吧”、“40.8684”、“-74.0223”],
[“1573”、“101酒吧”、“40.8684”、“-74.0223”],
[“1572”、“101酒吧”、“40.8684”、“-74.0223”],
[“1269”、“101 Pub”、“40.8684”、“-74.0223”],
[“1230”、“101酒吧”、“40.8684”、“-74.0223”],
[“221”、“101酒吧”、“40.8684”、“-74.0223”],
[“220”、“101酒吧”、“40.8684”、“-74.0223”],
[“697”、“LBI第113街海滩”、“39.5938”、“-74.2145”],
[“2838”、“14th Star Brewery and Taproom”、“44.8145”、“-73.0817”],
[“2844”、“十四星酿造公司”、“44.8201”、“73.0854”],
[“2842”、“十四星酿造公司”、“44.8201”、“73.0854”],
[“2841”、“十四星酿造公司”、“44.8201”、“73.0854”],
[“2840”、“十四星酿造公司”、“44.8201”、“-73.0854”]
];
映射(函数(签入){
var numINQuestion=签入[2]
结果[numINQuestion]=[]
对于(var i=fullcheckins.length-1;i>=0;i--){
if(fullcheckins[i][2]==numINQuestion){
结果[numINQuestion]。推送(完整签入[i][0])
}
};
})
对于(结果中的var prop){
var htmlscript='';
结果[prop].forEach(函数(id){
htmlscript+='';
htmlscript+='';
})
$(“#结果”).append(htmlscript)
}
我相信这就是您要找的 1) 首先构建一个结果对象,跟踪每个事件的id 2) 现在我们有了一个索引映射到ID的对象 3) 对于每一个,编写相应的html
var结果={}
var fullcheckins=[
[“3835”、“101酒吧”、“40.8684”、“-74.0223”],
[“2182”、“101 Pub”、“40.8684”、“-74.0223”],
[“2181”、“101 Pub”、“40.8684”、“-74.0223”],
[“1574”、“101酒吧”、“40.8684”、“-74.0223”],
[“1573”、“101酒吧”、“40.8684”、“-74.0223”],
[“1572”、“101酒吧”、“40.8684”、“-74.0223”],
[“1269”、“101 Pub”、“40.8684”、“-74.0223”],
[“1230”、“101酒吧”、“40.8684”、“-74.0223”],
[“221”、“101酒吧”、“40.8684”、“-74.0223”],
[“220”、“101酒吧”、“40.8684”、“-74.0223”],
[“697”、“LBI第113街海滩”、“39.5938”、“-74.2145”],
[“2838”、“14th Star Brewery and Taproom”、“44.8145”、“-73.0817”],
[“2844”、“十四星酿造公司”、“44.8201”、“73.0854”],
[“2842”、“十四星酿造公司”、“44.8201”、“73.0854”],
[“2841”、“十四星酿造公司”、“44.8201”、“73.0854”],
[“2840”、“十四星酿造公司”、“44.8201”、“-73.0854”]
];
映射(函数(签入){
var numINQuestion=签入[2]
结果[numINQuestion]=[]
对于(var i=fullcheckins.length-1;i>=0;i--){
if(fullcheckins[i][2]==numINQuestion){
结果[numINQuestion]。推送(完整签入[i][0])
}
};
})
对于(结果中的var prop){
var htmlscript='';
结果[prop].forEach(函数(id){
htmlscript+='';
htmlscript+='';
})
$(“#结果”).append(htmlscript)
}
一个选项是在呈现前重新安排
完整签入。比如:
var groups = fullcheckins.reduce(function (groups, checkin) {
var groupBy = checkin[2];
if (!groups.hasOwnProperty(groupBy)) {
groups[groupBy] = [];
}
groups[groupBy].push(checkin)
return groups
}, {})
然后你会得到一些看起来像
{
40.8684: Array[10],
39.5938: Array[1],
44.8145: Array[1],
44.8201: Array[4]
}
一个选项是在呈现前重新安排完整签入。比如:
var groups = fullcheckins.reduce(function (groups, checkin) {
var groupBy = checkin[2];
if (!groups.hasOwnProperty(groupBy)) {
groups[groupBy] = [];
}
groups[groupBy].push(checkin)
return groups
}, {})
然后你会得到一些看起来像
{
40.8684: Array[10],
39.5938: Array[1],
44.8145: Array[1],
44.8201: Array[4]
}
这实际上可能非常有用。我可以用两个元素而不是一个元素来分组吗?另外,如问题中所述,fullcheckins数组已经按checkin[1],然后checkin[2],然后checkin[3]排序,然后依次递减checkin[0]您当然可以,只需将var groupBy
行更改为您想要的行即可。例如,var groupBy=checkin[2]+,“+checkin[3]
将为您提供类似于“40.8684,-74.0223”
的密钥。我要指出的是,所有可用选项都不是唯一标识业务位置的完美方法(我假设您正在尝试这样做)。如果您的查询能够返回DB对位置使用的任何唯一标识符,那么这绝对是最好使用的键。不幸的是,数据库中没有位置的唯一标识符。在这种情况下,lat/long始终是唯一的,因此您所说的就足够了。我的下一个问题是如何将其转换为html格式。我已经回答了我自己的问题。这真是太棒了,非常感谢!这实际上可能非常有用。我可以用两个元素而不是一个元素来分组吗?另外,如问题中所述,fullcheckins数组已经按checkin[1],然后checkin[2],然后checkin[3]排序,然后依次递减checkin[0]您当然可以,只需将var groupBy
行更改为您想要的行即可。例如,var groupBy=checkin[2]+,“+checkin[3]
将为您提供类似于“40.8684,-74.0223”
的密钥。我要指出的是,所有可用选项都不是唯一标识业务位置的完美方法(我假设您正在尝试这样做)。如果您的查询能够返回DB对位置使用的任何唯一标识符,那么这肯定是最好使用的键