Javascript:使用快捷方式定义数组

时间:2014-01-14 20:21:40

标签: javascript arrays google-apps-script

我真的不知道如何问这个问题,也许这就是为什么我无法正确找到这个问题的答案。

所以我有一个很长的数字列表,我打算把它们放在一个数组中。

154,153,152,148,145,133,132,131,130,...,6,5,4,1 (You get the idea.)

问题在于我懒惰而且不想输入所有数字" initial"阵列。 (请注意,列表中有连续的数字字符串。)

我以为我可以这样做:

var array = [154:152,148,133:130,...,6:4,1];

对于array,这会产生类似的结果:

[154,153,152,148,133,132,131,130,...,6,5,4,1]

我知道我可以做一个循环来填补这些。但是棘手的部分是"休息"顺序。

我错过任何帮助或明显的解决方案。

(这是针对谷歌电子表格中的一些代码,它使用javascript作为基础。)

2 个答案:

答案 0 :(得分:0)

你怎么看待这个?

var a = ['154:152','148','133:130','6:4','1'];
var array = [];
for (i = 0; i < a.length; i++)
{
  var b = a[i];
  b = b.split(':');
  if (b.length == 2)
  {
    for (var j = b[0]; j > b[1]-1; j--)
    {
      array[array.length] = j;
      document.write(j);
    }
  }
  else
  {
    array[array.length] = b[0];
      document.write(b[0]);
   }
}

答案 1 :(得分:0)

不,你不能本地做到这一点。 但是,您可以编写一个简单的帮助函数来为您完成。

function createRange(arr) {
    var result = [], //The resulting array
        range;
    for (var i = 0; i < arr.length; i++) {//Iterate over the array
        if (Array.isArray(arr[i])) { //If we find another array 
            range = arr [i];
            for (var j=range [0]; j <= range [1]; j++) {//increase its first element until it's equal the second
                result.push(j); //add the number to the resulting array
            }
        } else { //If it's a number
            result.push(arr[i]); //put it in the resulting array
        }
    }
    return result; //return the array containing the range
}

createRange ([[1,5],10,[15,20]]) //[1, 2, 3, 4, 5, 10, 15, 16, 17, 18, 19, 20]

还有一个Fiddle