TIL 13 | JavaScript : Arrays & Objects

meow·2020년 7월 22일
0

JavaScript

목록 보기
4/46

Array 배열

순서가 있는 컬렉션이 필요할때 배열을 이용할 수 있다.

예시

var friends = [“Charlie”, “Liz”, “David”, “Mattias”]
  • index number은 0부터 시작한다.
alert( friends[0] ); // Charlie
alert( friends[1] ); // Liz
alert( friends[2] ); // David

Array Methods

  • push, pop
    맨 뒤에 item을 더하고 빼는 method
let fruits = ["사과", "오렌지"];
fruits.push("배");
alert( fruits ); // 사과,오렌지,배

let fruits = ["사과", "오렌지", "배"];
alert( fruits.pop() ); // 배열에서 "배"를 제거하고 제거된 요소를 얼럿창에 띄웁니다.
alert( fruits ); // 사과,오렌지
  • shift, unshift
    맨 앞 item 부터 더하고 빼는 method
let fruits = ["사과", "오렌지", "배"];
alert( fruits.shift() ); // 배열에서 "사과"를 제거하고 제거된 요소를 얼럿창에 띄웁니다.
alert( fruits ); // 오렌지,배

let fruits = ["오렌지", "배"];
fruits.unshift('사과');
alert( fruits ); // 사과,오렌지,배
  • pushunshift는 요소 여러 개를 한 번에 더해줄 수도 있다.
 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.toPrimitivevalueOf 메서드가 없다. 따라서 위 예시에선 문자열로의 형 변환이 일어나 []는 빈 문자열, [1]은 문자열 "1", [1,2]는 문자열 "1,2"로 변환된다.

이항 덧셈 연산자 "+"는 피연산자 중 하나가 문자열인 경우 나머지 피연산자도 문자열로 변환한다. 따라서 위 예시는 아래 예시와 동일하게 동작한다.

 alert( "" + 1 ); // "1"
alert( "1" + 1 ); // "11"
alert( "1,2" + 1 ); // "1,21"

Array Iteration

loop to iterate over an array

For Loop

  • ForEach
    arr.forEach(someFunction)

  • printReverse()
    index의 반대로 프린트된다

  • isUniform()
    item이 모두 같은지 true / false 로 return

  • sumArray()
    각 숫자를 모두 더한 결과를 return

  • max()
    array에서 가장 큰 숫자를 return

practice

movie DB


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));
})
  • Keyword this : function의 Object를 가르킨다.

Objects

Arrays 는 순서가 있는 반면 Object는 뒤죽박죽이다. 순서가 의미가 없다.

예시

var person = {
    name: “Cindy”,
    age: “24”,
    city: “LA”
}

console.log(person[“name”];
console.log(person.name);
profile
🌙`、、`ヽ`ヽ`、、ヽヽ、`、ヽ`ヽ`ヽヽ` ヽ`、`ヽ`、ヽ``、ヽ`ヽ`、ヽヽ`ヽ、ヽ `ヽ、ヽヽ`ヽ`、``ヽ`ヽ、ヽ、ヽ`ヽ`ヽ 、ヽ`ヽ`ヽ、ヽ、ヽ`ヽ`ヽ 、ヽ、ヽ、ヽ``、ヽ`、ヽヽ 🚶‍♀ ヽ``ヽ``、ヽ`、

2개의 댓글

comment-user-thumbnail
2020년 7월 23일

정리 잘된 자료 잘 보고 가요 ^^

1개의 답글