Чтобы заполнить массив одинаковыми значениями value на длину size можно воспользоваться следующей функцией:

/**
 * Заполнение массива одинаковыми значениями
 * @param ar - массив, который нужно заполнить
 * @param size - количество символов, которые нужно вставить
 * @param value - значение, которое нужно вставить
 */
function arrayPad(ar, size, value) {
	var len = Math.abs(size) - ar.length;
	var a = [].concat(ar);
	if (len <= 0)
		return a;
	for(var i = 0; i < len; i++)
		size < 0 ? a.unshift(value) : a.push(value);
	return a;
}

Эта функция вернет копию массива заполненную на длину size значением value. Если значение size меньше или равно длине исходного массива, то функция вернет его копию. Если параметр size отрицательный, то массив заполняется слева, если положительный, то справа. Примеры применения:

// создание массива размером 10 элементов со значением 1
var res = arrayPad([], 10, 1);

// создание двумерного массива 10x10 заполненного нулями
var a = arrayPad([], 10, 0);
var b = arrayPad([], 10, a);

// увеличение размера массива arr на 5 элементов со значением 0
var arr = [1,2,3,4,5];
var res = arrayPad(arr, 10, 0);
// результат res = [1,2,3,4,5,0,0,0,0,0]

// то же самое, только элементы добавляются в начало массива
var arr = [1,2,3,4,5];
var res = arrayPad(arr, -10, 0);
// результат res = [0,0,0,0,0,1,2,3,4,5]

Также можно добавить эту функцию в класс массив, что значительно упростит работу с ней:

Array.prototype.pad =
	function(size, value) {
		var len = Math.abs(size) - this.length;
		var a = [].concat(this);
		if (len <= 0)
			return a;
		for(var i = 0; i < len; i++)
			size < 0 ? a.unshift(value) : a.push(value);
		return a;
	};

Примеры применения:

// создание массива размером 10 элементов со значением 1
var res = [].pad(10, 1);

// создание двумерного массива 10x10 заполненного нулями
var a = [].pad(10, 0);
var b = [].pad(10, a);

// увеличение размера массива arr на 5 элементов со значением 0
var arr = [1,2,3,4,5];
var res = arr.pad(10, 0);
// результат res = [1,2,3,4,5,0,0,0,0,0]

// то же самое, только элементы добавляются в начало массива
var arr = [1,2,3,4,5];
var res = arr.pad(-10, 0);
// результат res = [0,0,0,0,0,1,2,3,4,5]
Добавить в закладки:

Оставить комментарий