javascript membuat larik kosong dengan ukuran tertentu


Jawaban:


67
var arr = new Array(5);
console.log(arr.length) // 5

14
OP bertanya in javascript how would I create an empty array of a given size. Ini memecahkan masalah itu.
mariocatch

12
OP telah memberikan contoh "kosong".
RobG

6
Nah ini adalah opsi lain untuk pertanyaan itu. Mereka dapat memilih salah satu jawaban yang diberikan, itulah
keunggulan

235

1) Untuk membuat array baru yang tidak dapat Anda lakukan iterasi , Anda dapat menggunakan konstruktor array:

Array(100) atau new Array(100)


2) Anda dapat membuat array baru, yang dapat diulang seperti di bawah ini:

a) Semua versi JavaScript

  • Array.apply: Array.apply(null, Array(100))

b) Dari versi JavaScript ES6

  • Operator perusak: [...Array(100)]
  • Array.prototype.fill Array(100).fill(undefined)
  • Array.from Array.from({ length: 100 })

Anda dapat memetakan array ini seperti di bawah ini.

  • Array(4).fill(null).map((u, i) => i) [0, 1, 2, 3]

  • [...Array(4)].map((u, i) => i) [0, 1, 2, 3]

  • Array.apply(null, Array(4)).map((u, i) => i) [0, 1, 2, 3]

  • Array.from({ length: 4 }).map((u, i) => i) [0, 1, 2, 3]


1
Array.prototype.fill (> = ES6) kangax.github.io/compat-table/es6/… ;
ptim

4
Enlightenment of the day - ketika Anda menyebutkan di bagian (A) bahwa array yang baru dibuat menggunakan sintaks konstruktor bahkan tidak dapat diulang. Javascript terkadang benar-benar mengejutkan.
NSP

Berapa ukuran Array(10000)dengan empty x 10000?
Qwerty

1
Panjangnya 10000, Anda dapat memeriksanya dengan console.log(Array(10000).length)Tetapi jika Anda menjalankan Array(10000).forEach((u, i) => console.log(i)), Anda tidak akan mendapatkan output
stpoa

Array.apply('x', Array(10))sebenarnya[undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]
Polv

44

Kami gunakan Array.from({length: 500})sejak 2017.


@ gion_13: Saya melihatnya dipilih dan milik saya ditolak. Alasan?
7vujy0f0hy

@ 7vujy0f0hy Saya tidak tahu mengapa Anda menurunkan suara. Saya memberi Anda suara positif, meskipun solusi Anda sedikit kurang intuitif daripada yang ini.
gion_13

@ gion_13: Terima kasih telah mengonfirmasi bahwa tidak ada yang salah dengan solusi saya ☺.
7vujy0f0hy

17

Coba gunakan whileloop,Array.prototype.push()

var myArray = [], X = 3;
while (myArray.length < X) {
  myArray.push("")
}

Atau, gunakan Array.prototype.fill()

var myArray = Array(3).fill("");

.fill()adalah solusi satu kapal yang elegan. Terima kasih!
colefner

15

Pada 2018 dan selanjutnya kita akan gunakan [...Array(500)]untuk itu.


1
Menuju masa depan!
Levi

Menariknya, ini (dan yang serupa) 50% lebih lambat dari sebelumnya (() => { let n = []; for(var i=0;i<500;i++){y.push("");} return n; })().
Alex

Itu berbau pengoptimalan prematur, mungkin jika Anda berniat untuk membuat sekumpulan array dengan puluhan juta elemen, Anda mungkin ingin mempertimbangkannya tetapi beberapa nanodetik, untuk kebanyakan kasus, tidak akan membuatnya sepadan dengan keterbacaan. .
JaredMcAteer

10

Pada ES5 (saat jawaban ini diberikan):

Jika Anda ingin undefinedelemen array kosong , Anda dapat melakukannya

var whatever = new Array(5);

ini akan memberimu

[undefined, undefined, undefined, undefined, undefined]

dan kemudian jika Anda ingin diisi dengan string kosong, Anda dapat melakukannya

whatever.fill('');

yang akan memberimu

["", "", "", "", ""]

Dan jika Anda ingin melakukannya dalam satu baris:

var whatever = Array(5).fill('');

2
Array baru (2) tidak memberi Anda [undefined, undefined]. Ini memberi Anda array yang tidak dapat diulang.
JCF

BAIK. Ada hal lain yang terjadi, saya tidak mengerti. Saya membuat array baru dengan new Array(2)dan apa yang saya dapatkan [ <2 empty items> ]tidak [undefined, undefined]. Menggunakan .mapyang pertama tidak berpengaruh. Namun, saya dapat mengulanginya menggunakan for...ofloop. Jika saya membuat array baru menggunakan notasi literal a = [undefined, undefined]maka saya dapat menggunakannya .map.
JCF

1
@JCF untuk ... menggunakan protokol iterator, jadi berperilaku berbeda dari forEach / map. Iterator kehilangan informasi kekosongan
Tomasz Błachut

@ TomaszBłachut @JCF Untuk para pemilih yang tidak memberikan suara, harap diingat bahwa jawaban ini diberikan lebih dari 4 tahun yang lalu - saat itu, jawaban ini 100% valid. ES6 dan ES7 tidak mulai diluncurkan ke browser masing-masing hingga pertengahan 2016 dan pertengahan 2018. Pada saat jawaban ini diberikan, versi JS adalah ES5. Jika Anda membutuhkan bukti lebih lanjut bahwa ini adalah cara kerja ES5, cukup putar contoh Chrome yang lebih lama - pada saat jawaban ini, itu akan menjadi v48 - dan jalankan Array(5). Anda akan melihat output sebagai berikut: [undefined x 5].
jeffdill2

@ jeffdill2 Yang terbaik adalah menambahkan informasi baru ke jawaban itu sendiri. Komentar tidak selalu dibaca sepenuhnya.
Boaz

4

Jika Anda ingin membuat array anonim dengan beberapa nilai sehingga Anda dapat menggunakan sintaks ini.

var arr = new Array(50).fill().map((d,i)=>++i)
console.log(arr)


0

Anda dapat menggunakan kedua metode javascript repeat () dan split () bersama-sama.

" ".repeat(10).split(" ")

Kode ini akan membuat array yang memiliki 10 item dan setiap item berupa string kosong.

const items = " ".repeat(10).split(" ")

document.getElementById("context").innerHTML = items.map((item, index) => index)

console.log("items: ", items)
<pre id="context">

</pre>

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.