Есть ли способ присвоить значения по умолчанию массивам в javascript?
ex: an array with 24 slots that defaults to 0
Есть ли способ присвоить значения по умолчанию массивам в javascript?
ex: an array with 24 slots that defaults to 0
Array.prototype.repeat= function(what, L){
while(L) this[--L]= what;
return this;
}
var A = [].repeat(0, 24);
оповещения (А)
var a = Array.apply(null, Array(24)).map(function() { return 0 });
// or:
var a = Array.apply(null, Array(5)).map(Boolean).map(Number);
Вы можете использовать функцию fill
для массива:
Array(24).fill(0)
Примечание: fill
был введен только в ECMAScript 2015 (псевдоним "6" ), поэтому поддержка браузера 2017 по-прежнему очень ограничена (например, Internet Explorer).
Немного многословный, но он работает.
var aray = [ 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0 ];
Если вы используете "очень современный" браузер (проверьте таблицу совместимости), вы можете положиться на fill
:
var array = new Array(LENGTH);
array.fill(DEFAULT_VALUE);
По нескольким причинам использование new Array()
не оценено многими разработчиками; поэтому вы можете сделать следующее:
var array = [];
for(var i=0; i<LENGTH; ++i) array.push(DEFAULT_VALUE);
Последнее гораздо более совместимо, и, как вы можете видеть, оба решения представлены двумя строками кода.
Я лично использую:
function replicate (n, x) {
var xs = [];
for (var i = 0; i < n; ++i) {
xs.push (x);
}
return xs;
}
Пример:
var hellos = replicate (100, "hello");
Если вы используете ES6 и выше, вы можете использовать
new Array(24).fill(0);
это также работает:
Array.from({ length: 24}, () => 0)
Нет.
Вы должны использовать цикл.
var a = new Array(24);
for (var i = a.length-1; i >= 0; -- i) a[i] = 0;
А теперь, умнее:)
@see ссылка на JavaScript-массив
Пример JSFiddle
var len = 100;
var ch = '0';
alert ( new Array(len).join( ch ) );
Используйте Lodash
(https://lodash.com/docs), надежную библиотеку для манипулирования массивами, которая также доступна для браузера.
var _ = require('lodash');
var A = _.fill(Array(24), 0);
[].fill.call({ length: 24 }, 0);
Самый простой:
myArray = new Array(24).fill(0)
Синтаксис, который я использую ниже, основан на скрипте ECMA 6/es6
let arr = [];
arr.length = 5; //Размер вашего массива;
[... arr].map(Boolean).map(Number); // трехточечный оператор называется оператором спреда, введенным в ECMA Script 6
------------Another way-------------
let variable_name = new Array (size).fill(initial_value)
для ex- let arr = new Array (5).fill(0) //метод заполнения также введен в es6
Другой способ согласно ECMA 5 или es5
var variable_name = Array.apply(null, Array (size)). map (Boolean).map(Number)
var arr = Array.apply(null, Array (5)). map (Boolean).map(Number);
Все они дадут вам одинаковый результат: [0,0,0,0,0]
Еще один способ добиться того же -
Array.from(Array(24),()=>5)
Array.from
принимает второй параметр в качестве функции карты.
лучшее и самое быстрое решение:
Array(length of the array).fill(a default value you want put in the array)
пример
Array(5).fill(1)
и результат будет
[1,1,1,1,1]
вы можете положить в него любую понравившуюся вещь:
Array(5).fill({name : ""})
Теперь, если вы хотите изменить некоторые из текущих значений в массиве Вы можете использовать
[the created array ].fill(a new value , start position, end position)
как
[1,1,1,1,1].fill("a",1,3)
и вывод
[1, "a", "a", 1, 1]
(new Array(5).toString().replace(/,/g, "0,") + "0").split(",")
// ["0", "0", "0", "0", "0"]
just do it:
//
var a = [];
//Function 'get': to get value of a[index], if a[index] undefined, return '0'
function get(i){
if (a[i] == null){
a[i] = 0;
}
return a[i];
}
//Use:
var index = 1230020;
console.log(get(index));