Использование underscorejs, как заполнить пробелы в массиве. Например:Заполнение пробелов в матрицах с подчеркиванием
fillGaps([1,2,3,6,7,22,23,24]) => [1,2,3,'...',6,7,'...',22,23,24]
Использование underscorejs, как заполнить пробелы в массиве. Например:Заполнение пробелов в матрицах с подчеркиванием
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;
}
Но я уверен, что короче.
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;
}
Вы можете удалить 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;
}
Это изменяет массив на месте.
В качестве альтернативы:
function fillGaps(arr) {
var result = [];
for (var i = 0; i < arr.length - 1; i++) {
result.push(arr[i]);
if (arr[i] < arr[i+1] - 1) {
result.push('...');
}
}
return result;
}
Или, если вы хотите, чтобы сделать код более читаемым и злоупотребление .reduce
и оператор запятая:
function fillGaps(arr) {
return arr.reduce(function(result, v, i, arr) {
return result.push(v), v < arr[i+1] - 1 ? result.push('...') : false, result;
}, []);
}
метод использования inArray найти недостающий элемент в массиве. Здесь ._last() вернет последний элемент в массиве.
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]="..";
}
С помощью длины массива последний элемент будет записан следующим образом. 'Массив1 [array1.length-1]' –
Я не думаю, что подчеркивание добавляет что-нибудь полезное для решения этой проблемы. Просто перебирайте массив и сравните его. –
Я предполагал, что вы можете сделать что-то умное, разделяя, а затем присоединяясь или тому подобное. Но нет. –
Иногда лучше держать его простым;) –