我真的不知道如何问这个问题,也许这就是为什么我无法正确找到这个问题的答案。
所以我有一个很长的数字列表,我打算把它们放在一个数组中。
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作为基础。)
答案 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