배열이란? 한개의 변수에 여러 개의 값을 순차적으로 저장할 때 사용한다.
var arr = new Array();
var arr = [];
배열 안에 들어있는 값들을 요소(element, item, etc)라고 한다.
var arr = [ 1, '2', ture ];
var arr1 = [ undefined, null, false, NaN, 1000 ];
배열의 값은 어떤 값이라도 배열의 요소로 추가할 수 있으며 종류가 다른 값들도 함께 담을 수 있다.
var fruits = [ 'apple', 'orange', 'banana' ];
fruits[0]; // 결과 : apple
var fruits = { first : 'apple', second : 'orange', third : 'banana' };
fruits.first; // 결과 : apple
myArray[0] = Date.now;
myArray[1] = myFunction;
myArray[2] = myCars;
var points = new Array(40, 100, 1, 5, 25, 10); // Bad
var points = [40, 100, 1, 5, 25, 10]; // Good
생성자 new Array()
대신 []
를 사용하는것이 좋다.
변수가 배열인지 알고싶은 경우, JavaScript 연산자 array.isArray
를 이용하여 알 수 있다.
var fruits = ["Banana", "Orange", "Apple", "Mango"];
Array.isArray(fruits);
// 결과 : true
하지만 이 방법은 ECMAScript 5가 이전 브라우저에서 지원이 되지 않아 문제가 된다.
function isArray(x) {
return x.constructor.toString().indexOf("Array") > -1;
}
// 결과 : true
위 방법은 인자가 배열일 경우, ture를 반환한다. 보다 정확히 얘기하자면, 객체 프로토 타입에 'Array'라는 단어를 포함할 경우 true가 반환된다.
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits instanceof Array;
// 결과 : true
위 방법은 instanceof개체가 주어진 생성자에 의해 생성되는 경우, true를 반환한다.
var food = [ 'pasta', 'steak', 'rice' ];
var myFavoriteFood = food[1];
console.log(myFavoriteFood);
// 결과 : steak
var food = [ 'pasta', 'steak', 'rice' ];
document.getElementById("demo").innerHTML = food;
var fibonacci = [ 1, 2, 3, 5, 8, 13 ];
console.log(fibonacci[4]); // 결과 : 8
fibonacci[4] = false;
console.log(fibonacci[4]); // 결과 : false
배열의 array.length
method는 배열의 길이를 반환한다.
var fruits = [ 'apple', 'banana', 'orange' ];
console.log(fruits); // 결과 : [ 'apple', 'orange', 'grape' ]
console.log(fruits.length); // 결과 : 3
함수와 매개변수를 응용해서 배열의 길이를 반환해주는 함수 만들어보기
var fruits = [ 'apple', 'grape', 'banana' ];
function getNumOfFruits(array) {
return array.length;
}
var numOfFruits = getNumOfFruits(fruits);
console.log(numOfFruits);
// 결과 : 3
배열의 array.forEach()
method는 주어진 함수를 배열 요소 각각에 실행한다.
var array1 = [ 'a', 'b', 'c' ];
array1.forEach(function(element) {
console.log(element);
});
// 결과: a, b, c
배열의 array.indexOf()
method는 배열 안 요소의 인덱스를 찾는다.
var fruits = ["apple", "banana", "mango"]
fruits.indexOf("banana");
// 결과 : 1
배열의 array.unshift()
method는 배열의 앞에 요소를 추가한다.
var arr = [];
arr.unshift(1);
arr.unshift(2);
배열의 array.push()
method는 배열의 끝에 요소를 추가한다.
var arr = [];
arr.push(1);
arr.push(2);
배열의 array.shift()
method는 배열의 앞에서부터 요소를 제거한다.
arr.shift();
배열의 array.pop()
method는 배열의 끝에서부터 요소를 제거한다.
arr.pop();
배열의 array.splice()
method는 인덱스 위치에 있는 요소를 제거,추가할 수 있다.
array.splice( 인덱스, 인덱스로부터 제거할 요소의 수, 인덱스로부터 추가할 요소명 );
추가할 요소명을 입력하지 않으면 제거만 됨,
제거할 요소에 0을 넣고 추가할 요소명을 넣을 경우 추가만 됨
배열의 array.slice()
method는 배열을 복사할 수 있다.
var fruits = [ 'apple', 'mango', 'orange' ];
fruits.slice();
var board = [
['R','N','B','Q','K','B','N','R'],
['P','P','P','P','P','P','P','P'],
[' ',' ',' ',' ',' ',' ',' ',' '],
[' ',' ',' ',' ',' ',' ',' ',' '],
[' ',' ',' ',' ',' ',' ',' ',' '],
[' ',' ',' ',' ',' ',' ',' ',' '],
['p','p','p','p','p','p','p','p'],
['r','n','b','q','k','b','n','r'] ];
console.log(board.join('\n') + '\n\n');
// Move King's Pawn forward 2
board[4][4] = board[6][4];
board[6][4] = ' ';
console.log(board.join('\n'));
결과는 다음과 같다.
R,N,B,Q,K,B,N,R
P,P,P,P,P,P,P,P
, , , , , , ,
, , , , , , ,
, , , , , , ,
, , , , , , ,
p,p,p,p,p,p,p,p
r,n,b,q,k,b,n,r
R,N,B,Q,K,B,N,R
P,P,P,P,P,P,P,P
, , , , , , ,
, , , , , , ,
, , , ,p, , ,
, , , , , , ,
p,p,p,p, ,p,p,p
r,n,b,q,k,b,n,r
values = [];
for (var x = 0; x < 10; x++){
values.push([
2 ** x,
2 * x ** 2
]);
};
console.table(values);
결과는 다음과 같다.
0 1 0
1 2 2
2 4 8
3 8 18
4 16 32
5 32 50
6 64 72
7 128 98
8 256 128
9 512 162
첫번째 열은 인덱스이다.