創建任意長度的零填充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]
編輯: -
如果陣列是動態的,然後簡單地把在這需要一個數的函數並用該變量替換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
,和Uint32Array
類保持爲零,因爲它的價值,所以你不需要任何複雜的灌裝技術,只是:
var ary = new Uint8Array(10);
array的所有元素ary
默認爲零。
如果希望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;})
你可以用你想要的任何東西來填充數組,只需改變返回的值內部功能內部.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邊緣,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. 如何創建在Python中填充零的給定長度的字節或字節數組?
- 4. C數組的長度(填充)
- 5. 創建零填充熊貓數據幀
- 6. 零長度數組
- 7. 零長度數組
- 8. python如何用零填充numpy數組
- 9. 將字符串填充到任意長度的方法
- 10. java中的任意數組長度
- 11. Bash:文件名中零填充任意數量的「數字」
- 12. 如何在scipy.fftpack中爲二維數組填充零填充?
- 13. 如何填充未知長度的PowerShell中的數組?
- 14. 如何在jQuery中創建零填充的隨機數字?
- 15. 如何使用sprintf在Perl中填充變量長度爲零?
- 16. 零填充數據,直到它的長度等於2的冪
- 17. VBA:創建一個長度等於選擇長度的零的數組
- 18. 基於任意長度的屬性排序JavaScript對象數組
- 19. 從數組數組中讀取任意長度的數組
- 20. 如何填充字符串的長度?
- 21. 從任意長度的csv列創建spark數據框
- 22. 如何在R中創建零長度的數字向量
- 23. 用零填充數組中的數據
- 24. 可變長度填充和填充填充梯度
- 25. C++任意長度整數
- 26. 遍歷任意長度的元組
- 27. 如何簡化創建一個未填充的整數數組
- 28. 如何在VBscript中創建帶填充零的標籤
- 29. 如何從JavaScript數組填充div-table?
- 30. 如何用ajax填充javaScript數組
是否有任何理由你想要零填充,而不是一個充滿「undefined」的X長度數組,它可以很容易地聲明爲'new Array(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) –