我尝试在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 &安培; Here与Output
(另外,愚蠢的问题,但我是否使用title[i] + \n
或title[i] + "\n"
添加新行?)
答案 0 :(得分:2)
使用for loop
和push()方法,如下所示:
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));
}
还有: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);
}