Это прекрасно работает в bash
:
END=5
i=1 ; while [[ $i -le $END ]] ; do
echo $i
((i = i + 1))
done
Нет встроенного способа, вам придется перебрать все из них:
function setAll(a, v) {
var i, n = a.length;
for (i = 0; i < n; ++i) {
a[i] = v;
}
}
http://jsfiddle.net/alnitak/xG88A/
Если вы действительно хотите, сделайте это:
Array.prototype.setAll = function(v) {
var i, n = this.length;
for (i = 0; i < n; ++i) {
this[i] = v;
}
};
, и тогда вы действительно сможете сделать cool.setAll(42)
(см. http://jsfiddle.net/alnitak /ee3hb/).
Однако некоторые люди недовольны расширением прототипа встроенных типов.
РЕДАКТИРОВАТЬ ES5 представил способ безопасного расширения как Object.prototype
, так и Array.prototype
без нарушения перечисления for ... in ...
:
Object.defineProperty(Array.prototype, 'setAll', {
value: function(v) {
...
}
});
РЕДАКТИРОВАТЬ 2 В Черновик ES6 есть и сейчас Array.prototype.fill
, использование cool.fill(42)
Подход ES6 очень чистый. Поэтому сначала вы инициализируете массив x длины, а затем вызываете для него метод fill
.
let arr = new Array(3).fill(9)
это создаст массив с 3 элементами, такими как:
[9, 9, 9]
На самом деле, вы можете использовать этот идеальный подход:
let arr = Array.apply(null, Array(5)).map(() => 0);
// [0, 0, 0, 0, 0]
Этот код создаст массив и заполнит его нулями. Или просто:
let arr = new Array(5).fill(0)
Другие ответы - «Хорошо», но цикл while кажется более подходящим:
function setAll(array, value) {
var i = array.length;
while (i--) {
array[i] = value;
}
}
Более креативная версия:
function replaceAll(array, value) {
var re = new RegExp(value, 'g');
return new Array(++array.length).toString().replace(/,/g, value).match(re);
}
Может работать не везде. : -)
map
является наиболее логичным решением этой проблемы.
let xs = [1, 2, 3];
xs = xs.map(x => 42);
xs // -> [42, 42, 42]
Однако, если есть вероятность, что массив разрежен, вам нужно будет использовать for
или, что еще лучше, for .. of
.
См .:
Используйте петлю for
и устанавливайте каждую из них по очереди.
Это - 2019, и Вы должны использовать это:
let arr = [...Array(20)].fill(10)
Так в основном 20
length
или новый иллюстрировавший примерами Array
.