Каков наиболее эффективный способ создания нулевого заполненного массива JavaScript произвольной длины?Как создать нулевой заполненный массив JavaScript произвольной длины?
ответ
Как о попытке так:
Array.apply(null, new Array(10)).map(Number.prototype.valueOf,0);
//Output as [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
или
new Array(10+1).join('0').split('').map(parseFloat)
//Output as [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
EDIT: -
Если массив является динамическим, то просто положить, что в функцию, которая принимает ряд и замените 10 на эту переменную.
моя длина массива динамическая – user2814799
просто поместите это в функцию, которая принимает число и заменяет 10 этой переменной! – Shryme
@Shryme: - Спасибо. Я также обновил это в своем ответе! –
Один способ может использовать рекурсию.
function fillArray(l, a) {
a = a || [];
if (0 < l) {
l -= 1;
a[l] = 0;
return fillArray(l, a);
}
return a;
}
Я также разместил более классический вариант:
function fillArray(l) {
var a;
for (a = []; 0 < l; l-=1, a[l]=0);
return a;
}
function repeatArray(value, len){
var A=[],i=0;
while (i<len) A[i++]= value;
return A;
}
По умолчанию Uint8Array
, Uint16Array
и Uint32Array
классы сохранить нули, как это ценности, так что вам не нужны никакие сложные методы заполнения , just:
var ary = new Uint8Array(10);
все элементы массиваПо умолчаниюбудет нулями.
Если вы хотите массив 9-длина:
Array.apply(null, {length: 9}).map(function() {return 0;})
Если вы хотите массив X-длина:
Array.apply(null, {length: X}).map(function() {return 0;})
Если у вас есть массив и хотите переписать его значения:
var arr=[54,53,6,7,88,76]
arr=arr.map(function() {return 0;})
Вы можете заполнить массив тем, что хотите, просто изменив значение на return внутри функция внутри .map:
Array.apply(null, {length: 9}).map(function() {return "a string";})
Array.apply(null, {length: 9}).map(function() {return Math.random();})
Array.apply(null, {length: 9}).map(function() {return NaN;})
Array.apply(null, {length: 9}).map(function() {return null;})
Array.apply(null, {length: 9}).map(function() {return true;})
Array.apply(null, {length: 9}).map(function() {return;})
Последние будет заполнить массив с неопределенными
Я тестировал как Unit8Array
[].slice.apply(new Uint8Array(n));
и присоединиться/раздельный метод
new Array(n + 1).join('0').split('').map(parseFloat);
jsPerf с интересными результатами. Chrome и Firefox были довольно медленными по обоим показателям (от 48 000 до 76 000 операций). Но Opera и Safari отлично справились с функцией Uint8Array (до 438 000 операций). Я думаю, что я начну использовать Uint8Array и надеюсь, что Chrome и Firefox улучшатся.
Новые расширения массивов ES6 позволяют сделать это изначально с помощью метода fill
.Теперь IE edge, Chrome и FF поддерживают его, но проверьте compatibility table
new Array(3).fill(0)
предоставит вам [0, 0, 0]
. Вы можете заполнить массив любым значением, например new Array(5).fill('abc')
(даже объекты и другие массивы).
Кроме того, вы можете изменить предыдущие массивы с заливкой:
arr = [1, 2, 3, 4, 5, 6]
arr.fill(9, 3, 5) # what to fill, start, end
, который дает вам: [1, 2, 3, 9, 9, 6]
Ясно, что лучший и самый семантический путь! – Casimir
В JavaScript ES6 есть очень простое решение. Я пришел сюда, потому что я пытаюсь codegolf его короче:
n = 999 // arbitrary length
a = Array(n).fill(0)
console.log(a)
Что об этом?
(new Array(123)).fill(0)
Это очень простой, элегантный и вы можете заполнить массив любой ценностью.
- 1. распечатать массив произвольной длины
- 2. Массив нулевой длины
- 3. нулевой длины многомерный массив
- 4. массив нулевой длины в Java
- 5. javascript - использовать заполненный массив
- 6. Массив интерполяционной матрицы Matplotlib до произвольной длины
- 7. Как представлен массив нулевой длины в памяти?
- 8. JSON массив нулевой длины даже с элементами?
- 9. Codeigniter произвольной длины URI
- 10. Ненуж кусочно произвольной длины
- 11. управления HTML в JavaScript - Галочка массив 1 возвращает нулевой длины
- 12. Строка произвольной длины в C
- 13. Динамически создать массив JS заполненный определенным значением
- 14. Кодирование длины пробега подстрок произвольной длины
- 15. Использование массива нулевой длины
- 16. typeof (T) .GetFields() возвращающий массив нулевой длины
- 17. КЛИПЫ: Утверждение фактов произвольной длины
- 18. объединения нескольких списков произвольной длины
- 19. Смежные повторяющиеся подстроки произвольной длины
- 20. Сортировка массивов объектов JavaScript на основе произвольной длины свойств
- 21. Создайте массив с фиксированной длиной для массива произвольной длины
- 22. нулевой длины URL Сегменты
- 23. Julia: передать массив произвольной длины сценарию из командной строки
- 24. Отправка массива произвольной длины через сокет. Endianness
- 25. Почему GCC разрешает массив нулевой длины только как последний элемент?
- 26. список Генерация случайных векторов произвольной длины
- 27. Показать символы нулевой длины
- 28. SIMD array add для произвольной длины массива
- 29. Как создать массив неравных массивов длины?
- 30. Как создать массив переменной длины в куче?
Есть ли какая-либо причина, по которой вы хотите заполнить нуль, а не массив длины X, заполненный «undefined», который легко может быть объявлен как «новый массив (x)», где 'x' является целым числом от 0 до 2^32 - 1. –
Я как-то задал очень похожий вопрос, и я нашел много хороших ответов: http://stackoverflow.com/questions/17776149/is-there-a-more-concise-way-to-initialize-empty-multidimensional -arrays –
Возможный дубликат [Самый эффективный способ создания нулевого заполненного массива JavaScript?] (http://stackoverflow.com/questions/1295584/most-efficient-way-to-create-a-zero-filled-javascript- array) –