Javascript 根据条件获取第一个和最后一个数组

Javascript 根据条件获取第一个和最后一个数组,javascript,arrays,multidimensional-array,google-apps-script,Javascript,Arrays,Multidimensional Array,Google Apps Script,我有一个像这样的数组 [[2017-08-31,AA, 12:00 PM], [2017-08-31,AA, 01:00 PM], [2017-08-31,AA, 01:00 PM], [2017-08-31,AA, 02:00 PM], [2017-08-31,BB, 03:00 PM], [2017-08-31,BB, 04:00 PM]] [[2017-08-31,AA, 12:00 PM], [2017-08-31,AA, 02:00 PM], [2017-

我有一个像这样的数组

[[2017-08-31,AA, 12:00 PM], 
 [2017-08-31,AA, 01:00 PM], 
 [2017-08-31,AA, 01:00 PM], 
 [2017-08-31,AA, 02:00 PM], 
 [2017-08-31,BB, 03:00 PM], 
 [2017-08-31,BB, 04:00 PM]]
[[2017-08-31,AA, 12:00 PM], 
 [2017-08-31,AA, 02:00 PM], 
 [2017-08-31,BB, 03:00 PM], 
 [2017-08-31,BB, 04:00 PM]]
这是我的代码,关于如何根据时间进行排序

 TITOArray.push([output_stddate,std_timein]);
    TITOArray.sort(function (a, b) {
      var time1 = a[2];
      var time2 = b[2];
      return new Date('1970/01/01 ' + time1) - new Date('1970/01/01 ' + time2);
    });
  }
如何获取第一个和最后一个数组

像这样

[[2017-08-31,AA, 12:00 PM], 
 [2017-08-31,AA, 01:00 PM], 
 [2017-08-31,AA, 01:00 PM], 
 [2017-08-31,AA, 02:00 PM], 
 [2017-08-31,BB, 03:00 PM], 
 [2017-08-31,BB, 04:00 PM]]
[[2017-08-31,AA, 12:00 PM], 
 [2017-08-31,AA, 02:00 PM], 
 [2017-08-31,BB, 03:00 PM], 
 [2017-08-31,BB, 04:00 PM]]
只要第1列和第2列中的条件相同,则获取第一个和最后一个数组


我的意思是,对于每个列1和列2组,得到第一个和最后一个数组

TYSM获取帮助

函数firstandlast()
function firstandlast() 
{
  var tA=[['2017-08-31','AA','12:00 PM'],['2017-08-31','AA','01:00 PM'],['2017-08-31','AA','01:00 PM'],['2017-08-31','AA','02:00 PM'],['2017-08-31','BB','03:00 PM'],['2017-08-31','BB','04:00 PM']];
  var gA=[];
  for(var i=0;i<tA.length;i++)
  {
    if(i==0)
    {
      gA.push(tA[i]);
    }
    else
    {
      if(tA[i][1]!=last1)
      {
        gA.push(tA[i-1]);
        gA.push(tA[i]);
      }
    }
    var last1=tA[i][1];
  }
  if(gA.indexOf(tA[tA.length-1])==-1)
  {
    gA.push(tA[tA.length-1]);
  }
  Logger.log(gA);
}
{ 变量tA=['2017-08-31'、'AA'、'12:00 PM']、['2017-08-31'、'AA'、'01:00 PM']、['2017-08-31'、'AA'、'01:00 PM']、['2017-08-31'、'AA'、'02:00 PM']、['2017-08-31'、'BB'、'03:00 PM']、['2017-08-31'、'BB'、'04:00 PM']; var gA=[]; 对于(var i=0;i
函数firstandlast()
{
变量tA=['2017-08-31'、'AA'、'12:00 PM']、['2017-08-31'、'AA'、'01:00 PM']、['2017-08-31'、'AA'、'01:00 PM']、['2017-08-31'、'AA'、'02:00 PM']、['2017-08-31'、'BB'、'03:00 PM']、['2017-08-31'、'BB'、'04:00 PM'];
var gA=[];
对于(var i=0;i
var testData=[[2017-08-31'、'AA'、'12:00 PM'],
['2017-08-30','AA','01:00 PM'],
['2017-08-31','AA','01:00 PM'],
['2017-08-31','AA','02:00 PM'],
['2017-08-31','BB','03:00 PM'],
['2017-08-31'、'BB'、'04:00 PM'];
函数树排序(多数组){
var rootNode={};
multiArray.forEach(函数(行){
pushNode(第[0]行、第[1]行、第[2]行);
});
功能节点(日期、类别、时间){
var key=date+'\n'+类别;
if(rootNode[key]| |(rootNode[key]=[])){
rootNode[key].push(时间);
if(rootNode[key].length>1){//如果有两项,则对数组进行排序;
rootNode[key].sort(函数(time1,time2){
返回新日期('1970/01/01'+时间1)-新日期('1970/01/01'+时间2)
});
}
if(rootNode[key].length>2){//如果有三个项,则使用first和last重新计算数组
rootNode[key]=[rootNode[key][0],rootNode[key][2];
}
}
}
函数getFirstLast(树){
设temp=[];
Object.keys(树).forEach(函数(键){
var date=key.split('\n')[0];
var category=key.split('\n')[1];
临时推送([日期、类别、树[键][0]]);
如果(tree[key].length>1)temp.push([date,category,tree[key][1]]);//可能只有一个项目因此无法执行此检查
})
返回温度;
}
返回getFirstLast(rootNode);
}
log(treeishSort(testData));
var testData=[[2017-08-31'、'AA'、'12:00 PM'],
['2017-08-30','AA','01:00 PM'],
['2017-08-31','AA','01:00 PM'],
['2017-08-31','AA','02:00 PM'],
['2017-08-31','BB','03:00 PM'],
['2017-08-31'、'BB'、'04:00 PM'];
函数树排序(多数组){
var rootNode={};
multiArray.forEach(函数(行){
pushNode(第[0]行、第[1]行、第[2]行);
});
功能节点(日期、类别、时间){
var key=date+'\n'+类别;
if(rootNode[key]| |(rootNode[key]=[])){
rootNode[key].push(时间);
if(rootNode[key].length>1){//如果有两项,则对数组进行排序;
rootNode[key].sort(函数(time1,time2){
返回新日期('1970/01/01'+时间1)-新日期('1970/01/01'+时间2)
});
}
if(rootNode[key].length>2){//如果有三个项,则使用first和last重新计算数组
rootNode[key]=[rootNode[key][0],rootNode[key][2];
}
}
}
函数getFirstLast(树){
设temp=[];
Object.keys(树).forEach(函数(键){
var date=key.split('\n')[0];
var category=key.split('\n')[1];
临时推送([日期、类别、树[键][0]]);
如果(tree[key].length>1)temp.push([date,category,tree[key][1]]);//可能只有一个项目因此无法执行此检查
})
返回温度;
}
返回getFirstLast(rootNode);
}


日志(treeishSort(testData))
问题仍然不太清楚。第一个和最后一个数组在哪里?你提到的结果中有4个数组。我的意思是,假设第1列和第2列是组,在该组中,我如何获得第一个和最后一个数组?对于每个第1列和第2列组,获得第一个和最后一个数组。问题并不那么清楚这是第一个和最后一个数组?你提到的结果中有4个数组。我的意思是,假设第1列和第2列是组,在该组中,我如何才能得到第一个和最后一个数组?对于每个第1列和第2列组,得到第一个和最后一个数组是什么ion()
javascriptSir什么是
treeishSort
Sir它至少对我不起作用一个
函数()
JavaScriptIt对我有效,即使数据是随机排列的,这段代码在许多行中也有效吗?这段代码很好,我只需要添加额外的代码,比如在获得第一个和最后一个之前按日期和时间排序。TYSM需要帮助,先生:)我确实假设所有中间元素都是垂直排序的。它看起来就像电子表格中的行。所以我假设表格是按第二列排序的。实际上,先生,我的目标是先按第二列对它们进行分组,然后按第1列和第3列对它们进行排序,然后再删除最后一行中的第一行。这就像是一个多次输入和超时b但是,我将根据第1列和第2列得到第一行和最后一行道琼斯指数。先生,您认为您给出的代码是否满足这一标准?这对我来说很有效,即使数据是随机排列的,这段代码在许多行中都有效吗?这段代码很好,我只需要添加额外的代码,比如在得到第一行和最后一行之前按日期和时间排序。先生:)我假设所有中间元素都是垂直排序的。它看起来就像电子表格中的行。所以我假设表格是按第二列排序的。实际上,先生,我的目标是先按第二列对它们进行分组,然后按第1列和第2列对它们进行排序