Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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
for循环中特定元素上的Javascript数组组_Javascript_Mysql_Arrays_For Loop - Fatal编程技术网

for循环中特定元素上的Javascript数组组

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","

我目前有一些代码显示一些基于MySQL查询的html。在我当前的查询中,我只选择带有
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对位置使用的任何唯一标识符,那么这肯定是最好使用的键