Javascript 用下划线填充数组间隙
使用下划线,如何填补数组中的空白。例如:Javascript 用下划线填充数组间隙,javascript,arrays,underscore.js,Javascript,Arrays,Underscore.js,使用下划线,如何填补数组中的空白。例如: fillGaps([1,2,3,6,7,22,23,24]) => [1,2,3,'...',6,7,'...',22,23,24] 您可以这样做: function fillGaps(arr) { var result = []; var previous = 0; _.each(arr, function(p) { if (p > previous + 1) { result.push('...')
fillGaps([1,2,3,6,7,22,23,24]) => [1,2,3,'...',6,7,'...',22,23,24]
您可以这样做:
function fillGaps(arr) {
var result = [];
var previous = 0;
_.each(arr, function(p) {
if (p > previous + 1) {
result.push('...')
}
result.push(p);
previous = p;
});
return result;
}
但我确信还有更短的。警报(fillGaps([1,2,3,6,7,22,23,24]);
alert(fillGaps([1,2,3,6,7,22,23,24]));
function fillGaps(arr) {
var l=arr.length;
var out=[];
var thisel;
var lastel=null;
for(var i=0;i<l;i++) {
thisel=arr[i];
if(lastel!=null && thisel>lastel+1) out.push("...");
out.push(thisel);
lastel=thisel;
}
return out;
}
函数填充间隙(arr){
var l=阵列长度;
var out=[];
var thisel;
var lastel=null;
对于(VARI=0;ilastel+1)out.push(“…”);
向外推(蓟);
拉塞尔=提塞尔;
}
返回;
}
您可以删除lastel=null&
并设置var lastel=1如果希望fillGaps([3,6,7,22])
返回['…',3'…',6,7'…',22]
(如果不是1,也填充第一位)我的看法如下:
function fillGaps(arr) {
for (var i = arr.length - 2; i > -1; i--) {
if (arr[i] < arr[i+1] - 1) {
arr.splice(i+1, 0, '...');
}
}
return arr;
}
使用inArray方法查找数组中缺少的元素。这里将返回数组中的最后一个元素
var array1 = [1,2,4,7];
var array2 = [];
for(var i = 0;j < _.last(array1) ; i++){
if($.inArray(i+1, array1)>=0)
array2[i]= i+1;
else array2[i]="..";
}
var数组1=[1,2,4,7];
var array2=[];
对于(var i=0;j=0)
阵列2[i]=i+1;
else array2[i]=”;
}
我不认为下划线添加了任何有用的东西来解决这个问题。简单地迭代数组并进行比较。我想象你可以通过分区然后加入之类的方式做一些聪明的事情。但不是。有时候最好保持简单;)在数组长度的帮助下,最后一个元素将像这样被捕获<代码>阵列1[阵列1.长度-1]
function fillGaps(arr) {
return arr.reduce(function(result, v, i, arr) {
return result.push(v), v < arr[i+1] - 1 ? result.push('...') : false, result;
}, []);
}
var array1 = [1,2,4,7];
var array2 = [];
for(var i = 0;j < _.last(array1) ; i++){
if($.inArray(i+1, array1)>=0)
array2[i]= i+1;
else array2[i]="..";
}