순서가 있는 컬렉션이 필요할때 배열을 이용할 수 있다.
var friends = [“Charlie”, “Liz”, “David”, “Mattias”]
alert( friends[0] ); // Charlie
alert( friends[1] ); // Liz
alert( friends[2] ); // David
push
, pop
let fruits = ["사과", "오렌지"];
fruits.push("배");
alert( fruits ); // 사과,오렌지,배
let fruits = ["사과", "오렌지", "배"];
alert( fruits.pop() ); // 배열에서 "배"를 제거하고 제거된 요소를 얼럿창에 띄웁니다.
alert( fruits ); // 사과,오렌지
shift
, unshift
let fruits = ["사과", "오렌지", "배"];
alert( fruits.shift() ); // 배열에서 "사과"를 제거하고 제거된 요소를 얼럿창에 띄웁니다.
alert( fruits ); // 오렌지,배
let fruits = ["오렌지", "배"];
fruits.unshift('사과');
alert( fruits ); // 사과,오렌지,배
push
와 unshift
는 요소 여러 개를 한 번에 더해줄 수도 있다. let fruits = ["사과"];
fruits.push("오렌지", "배");
fruits.unshift("파인애플", "레몬");
// ["파인애플", "레몬", "사과", "오렌지", "배"]
alert( fruits );
indexOf
아이템의 인덱스를 찾는다. 없으면 -1
을 출력한다.
Slice
array의 부분을 복사하는 method
fruits.slice(1,3);
// 시작과 끝 입력
fruits.slice()
// 전체복사
length
length
프로퍼티는 배열 내 요소의 개수가 아니라 가장 큰 인덱스에 1을 더한 값이다. 따라서 배열에 요소가 하나 있고, 이 요소의 인덱스가 아주 큰 정수라면 배열의 length
프로퍼티도 아주 커진다.
let fruits = [];
fruits[123] = "사과";
alert( fruits.length ); // 124
length
프로퍼티의 또 다른 독특한 특징 중 하나는 쓰기가 가능하다는 점이다.
length
의 값을 수동으로 증가시키면 아무 일도 일어나지 않습니다. 그런데 값을 감소시키면 배열이 잘린다. 짧아진 배열은 다시 되돌릴 수 없다.
let arr = [1, 2, 3, 4, 5];
arr.length = 2; // 요소 2개만 남기고 잘라봅시다.
alert( arr ); // [1, 2]
arr.length = 5; // 본래 길이로 되돌려 봅시다.
alert( arr[3] ); // undefined: 삭제된 기존 요소들이 복구되지 않습니다.
이런 특징을 이용하면 arr.length = 0;
을 사용해 아주 간단하게 배열을 비울 수 있다.
toString
toString
메서드가 구현되어 있어 이를 호출하면 요소를 쉼표로 구분한 문자열이 반환된다.let arr = [1, 2, 3];
alert( arr ); // 1,2,3
alert( String(arr) === '1,2,3' ); // true
alert( [] + 1 ); // "1"
alert( [1] + 1 ); // "11"
alert( [1,2] + 1 ); // "1,21"
배열엔 Symbol.toPrimitive
나 valueOf
메서드가 없다. 따라서 위 예시에선 문자열로의 형 변환이 일어나 []
는 빈 문자열, [1]
은 문자열 "1"
, [1,2]
는 문자열 "1,2"
로 변환된다.
이항 덧셈 연산자 "+"
는 피연산자 중 하나가 문자열인 경우 나머지 피연산자도 문자열로 변환한다. 따라서 위 예시는 아래 예시와 동일하게 동작한다.
alert( "" + 1 ); // "1"
alert( "1" + 1 ); // "11"
alert( "1,2" + 1 ); // "1,21"
loop to iterate over an array
ForEach
arr.forEach(someFunction)
printReverse()
index의 반대로 프린트된다
isUniform()
item이 모두 같은지 true / false 로 return
sumArray()
각 숫자를 모두 더한 결과를 return
max()
array에서 가장 큰 숫자를 return
var movies = [
{
title: "in Bruges",
watched: true,
rate: 5
},
{
title: "Frozen",
watched: false,
rate: 4.5
},
{
title: "Mad Max Fury Road",
watched: true,
rate: 5
},
{
title: "Les Mixerables",
watched: false,
rate: 3.5
}
]
movies.forEach(function(movie){
var result = "You have "
if(movie.watched){
result += "watched ";
} else {
result += "not seen ";
}
result += "\"" + movie.title + "\" - ";
result += movie.rate + " stars";
console.log(result)
})
더 깔끔하게 짜기
function buildString(movie){
var result = "You have "
if(movie.watched){
result += "watched ";
} else {
result += "not seen ";
}
result += "\"" + movie.title + "\" - ";
result += movie.rate + " stars";
return result;
}
movies.forEach(function(movie){
console.log(buildString(movie));
})
this
: function의 Object를 가르킨다.Arrays
는 순서가 있는 반면 Object
는 뒤죽박죽이다. 순서가 의미가 없다.
var person = {
name: “Cindy”,
age: “24”,
city: “LA”
}
console.log(person[“name”];
console.log(person.name);
정리 잘된 자료 잘 보고 가요 ^^