使用Javascript和Google AppScript合并多个阵列均匀/交替

时间:2015-06-20 04:11:30

标签: javascript arrays google-apps-script merge

我尝试在javascript / Google appScript中均匀/交替合并多个数组。有几个阵列(5或6)。我尝试了两种不同的方法,但都没有奏效。我没有真正使用javascript工作,而且我已经成功地获得了代码,但我无法正确合并;并且他们中的大多数人说将两个数组合并为一个(可能是我的问题)。

我已经看到很多关于如何做到这一点的PHP示例,他们在逻辑阅读方面非常直接,我更了解它们,但是到目前为止我已经看过并试过的所有javascript方法未能产生我想要的结果。我不确定它是否是AppScript格式化数组的方式,或者他们只是没有处理更多的数据。

我的数据目前与此类似:

var title = ["sometitle1","sometitle2","sometitle3"];
var link = ["somelink1","somelink2","somelink3"];
var date = ["somedate1","somedate2","somedate3"];
var data = ["somedata1","somedata2","somedata3"];
var all = [title,link,date,data];
var mix = [];

注意:由于数据是从电子表格中提取的,因此所有可变数据的长度都应相同。

我想要的输出是:

mix = ["sometitle1","somelink1","somedate1","somedata1","sometitle2","somelink2","somedate2","somedata2","sometitle3","somelink3","somedate3","somedata3"];

我尝试使用appscript将它们与此合并:return ContentService.createTextOutput(title + link + data + date),但它没有正常运行,它按顺序打印出来,而不是按照我喜欢的方式合并它们。

然后我尝试使用我在sstackoverflow上找到的循环合并:

for (var i = 0; all.length !== 0; i++) {
    var j = 0;
    while (j < all.length) {
        if (i >= all[j].length) {
            all.splice(j, 1);
        } else {
            mix.push(all[j][i]);
            j += 1;
        }
    }
}

但它拼接将每个字母与逗号合并

mix = [s,o,m,e,t,i,t,l,e,1,s,o,m,e,t,i,t,l,e,2,s,o,m,e,t,i,t,l,e,3,s,o,m,e,l,i,n,k,1,...]

并且不会替换数据。

我正在处理的代码(2个版本)是:here Output  &安培; HereOutput

(另外,愚蠢的问题,但我是否使用title[i] + \ntitle[i] + "\n"添加新行?)

1 个答案:

答案 0 :(得分:2)

使用for looppush()方法,如下所示:

function test(){
  var title = ["sometitle1","sometitle2","sometitle3"];
  var link = ["somelink1","somelink2","somelink3"];
  var date = ["somedate1","somedate2","somedate3"];
  var data = ["somedata1","somedata2","somedata3"];
  //var all = [title,link,date,data];
  var mix = [];
  for(var n=0;n<title.length;n++){
    mix.push(title[n],link[n],date[n],data[n]);
  }
  Logger.log(JSON.stringify(mix));
}

enter image description here

还有:title[i] + "\n"用于添加新行

编辑以下评论:

您的代码应该像这样结束:

  ...
  for(var n=0;n<titles.length;n++){
    mix.push(titles[n],links[n],descriptions[n],pubdates[n],authors[n]);
  }
  var mixString = mix.join('');// convert the array to a string without separator or choose the separator you want by changing the argument.

  //Print data and set mimetype
  return ContentService.createTextOutput(mixString)
  .setMimeType(ContentService.MimeType.RSS);
}