자바 스크립트는 주어진 크기의 빈 배열을 만듭니다.


답변:


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

14
OP가 물었다 in javascript how would I create an empty array of a given size. 이것은 그 문제를 해결합니다.
mariocatch

12
OP는 "비어 있음"의 예를 제공했습니다.
RobG

6
이것은 질문에 대한 또 다른 옵션입니다. 그들은 제공 한 답변 중 하나를 선택할 수 있습니다, 그 :) 유래의 영광
mariocatch

235

1) 반복수없는 새 배열을 만들려면 배열 생성자를 사용할 수 있습니다.

Array(100) 또는 new Array(100)


2) 아래와 같이 반복 할 수있는 새 어레이를 만들 수 있습니다 .

a) 모든 JavaScript 버전

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

b) ES6 JavaScript 버전에서

  • 비 구조화 연산자 : [...Array(100)]
  • Array.prototype.fill Array(100).fill(undefined)
  • Array.from Array.from({ length: 100 })

아래와 같이 이러한 배열을 매핑 할 수 있습니다.

  • 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
오늘의 깨달음-(A)에서 생성자 구문을 사용하여 새로 생성 된 배열이 반복조차 불가능하다고 언급했을 때. Javascript는 때때로 정말 놀랍습니다.
RBT

Array(10000)와의 크기는 empty x 10000얼마입니까?
Qwerty

1
길이는 10000이며 다음으로 확인할 수 있습니다. console.log(Array(10000).length)하지만 실행 Array(10000).forEach((u, i) => console.log(i))하면 출력이 표시되지 않습니다
stpoa

Array.apply('x', Array(10))실제로[undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]
Polv

44

Array.from({length: 500})2017 년부터 사용하고 있습니다 .


@ gion_13 : 나는 그것이 투표되고 투표가 거절되는 것을 봅니다. 이유?
7vujy0f0hy

@ 7vujy0f0hy 왜 당신이 투표에서 떨어졌는지 모르겠습니다. 당신의 솔루션이 이것보다 약간 덜 직관적이지만 나는 당신에게 찬성표를주었습니다.
gion_13

@ gion_13 : 내 솔루션에 문제가 없는지 확인해 주셔서 감사합니다 ☺.
7vujy0f0hy

17

while루프를 사용해보십시오 .Array.prototype.push()

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

또는 Array.prototype.fill()

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

.fill()우아한 원 라이너 솔루션입니다. 감사!
colefner

15

2018 년부터는이를 위해 사용할 [...Array(500)]것입니다.


1
미래로!
Levi

놀랍게도 이것 (및 유사)은 (() => { let n = []; for(var i=0;i<500;i++){y.push("");} return n; })().
Alex

너무 이른 최적화의 악취가 있습니다. 수천만 개의 요소가 포함 된 배열을 만들려는 경우 고려해 볼 수 있지만 대부분의 경우 몇 나노초는 가독성을 떨어 뜨릴 가치가 없습니다. .
JaredMcAteer

10

ES5 기준 (이 답변이 제공되었을 때) :

undefined요소 배열을 원하면 간단히 할 수 있습니다.

var whatever = new Array(5);

이것은 당신에게 줄 것입니다

[undefined, undefined, undefined, undefined, undefined]

빈 문자열로 채우려면 다음을 수행 할 수 있습니다.

whatever.fill('');

당신에게 줄 것입니다

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

그리고 한 줄로하고 싶다면 :

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

2
new Array (2)는 [undefined, undefined]를 제공하지 않습니다. 반복 할 수없는 배열을 제공합니다.
JCF

확인. 이해가 안되는 다른 일이 있습니다. 나는 새로운 배열을 만들고 있는데 new Array(2)내가 얻는 [ <2 empty items> ]것은 [undefined, undefined]. 전자에 사용하면 .map효과가 없습니다. 그러나 for...of루프를 사용하여 반복 할 수 있습니다 . 리터럴 표기법 a = [undefined, undefined]을 사용하여 새 배열을 만들면 사용할 수 있습니다 .map.
JCF

1
@JCF for ... of는 반복기 프로토콜을 사용하므로 forEach / map과 다르게 동작합니다. 반복자는 빈 정보를
잃어 버립니다

@ TomaszBłachut @JCF 반대 투표자들의 경우이 답변은 4 년 전에 주어 졌음을 명심하십시오. 그 당시이 답변은 100 % 유효했습니다. ES6와 ES7은 각각 2016 년 중반과 2018 년 중반까지 브라우저에 출시되지 않았습니다. 이 답변의 당시 JS 버전은 ES5였습니다. 당신이이 것을 더 증명해야하는 경우 입니다 ES5는, 단순히 크롬의 이전 인스턴스를 회전 작동 방식 - 및 실행 -이 답변의 시간을, 그것은 V48했을 것이다 Array(5). 다음과 같은 출력이 표시 [undefined x 5]됩니다..
jeffdill2

@ jeffdill2 답변 자체에 새로운 정보를 추가하는 것이 가장 좋습니다. 주석이 항상 완전히 읽히는 것은 아닙니다.
Boaz

4

이 구문을 사용할 수 있도록 일부 값으로 익명 배열을 생성하려는 경우.

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


0

자바 스크립트 메소드 repeat ()와 split ()을 함께 사용할 수 있습니다.

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

이 코드는 10 개의 항목이 있고 각 항목이 빈 문자열 인 배열을 만듭니다.

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

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

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

</pre>

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.