스터디/개인스터디

#015 자바스크립트 200제 - Array 객체의 메소드 01

d0201d 2020. 12. 16. 21:59

push() : 배열 뒤에 요소 추가하기

const festa = ['mang'];
festa.push('chimmy');
festa.push('tata');
festa.push('cooky');
festa.push('shooky');
festa.push('koya');
festa.push('rj');

festa.forEach(name => {
    console.log(name);
})

//mang
//chimmy
//tata
//cooky
//shooky
//koya
//rj

- forEach 반복문 : 오직 Array 객체에서만 사용가능한 메서드, 배열의 요소들을 반복하여 작업을 수행

 

 

unshift() : 배열 맨 앞에 요소 추가하기

const festa = ['mang'];
festa.unshift('chimmy');
festa.unshift('tata');
festa.unshift('cooky');
festa.unshift('shooky');
festa.unshift('koya');
festa.unshift('rj');

festa.forEach(name => {
    console.log(name);
})

//rj
//koya
//shooky
//cooky
//tata
//chimmy
//mang

 

length : 배열 길이 구하기

const ship = {
    max: 4,   //배의 정원 수를 의미
    passengers: [],
    onBoard: function(name) {
        if (this.passengers.length === 4) {
            console.log(`This ship is full. ${name} can not board this ship.`);
        } else {
            this.passengers.push(name);
            console.log(`${name} boarded.`)
        }
    }
}

ship.onBoard('chloe');
ship.onBoard('jay');
ship.onBoard('david');
ship.onBoard('asher');
ship.onBoard('deniel');
console.log(ship.passengers);

//chloe boarded.
//jay boarded.
//david boarded.
//asher boarded.
//This ship is full. deniel can not board this ship.
//["chloe", "jay", "david", "asher"]

 

concat : 배열 합치기

const prevList = [1, 2, 3];
const currentList = [4, 5, 6];
const nextList = [7, 8, 9];

console.log(prevList.concat(currentList)) //[1,2,3,4,5,6]
console.log(prevList.concat(currentList, nextList)); //[1,2,3,4,5,6,7,8,9]

console.log(['배열'].concat('합치기'));  //['배열','합치기']
console.log(['배열'].concat('합치기','JavsScript200'));  //['배열','합치기','JavaScript']

- concat 함수를 호출하는 첫 번째 리터럴이 배열 자료형이어야만 Array객체 메소드 concat이 실행됨

 

 

join : 배열에 특정 구분자를 넣어 문자형을 변환하기

- 배열의 각 요소 사이에 구분자를 넣어 하나의 문자열로 병합

const dialogue = [
    '원숭이 엉덩이는 빨개',
    '빨가면 사과 사과는 맛있어',
    '맛있으면 바나나 바나나는 길어',
    '길으면 기차 기차는 빨라',
    '빠르면 비행기 비행기는 높아.'
];

console.log(dialogue.join('. '));  
console.log(dialogue.join('.\n'));

//원숭이 엉덩이는 빨개. 빨가면 사과 사과는 맛있어. 맛있으면 바나나 바나나는 길어. 길으면 기차 기차는 빨라. 빠르면 비행기 비행기는 높아.

//원숭이 엉덩이는 빨개.
//빨가면 사과 사과는 맛있어.
//맛있으면 바나나 바나나는 길어.
//길으면 기차 기차는 빨라.
//빠르면 비행기 비행기는 높아.

 

 

pop() : 배열의 마지막 요소 추출하기

- 요소를 추출할 때 원본 배열도 함께 수정되기 때문에 미리 고려해야 함

const arr = [1, 2, 3];
console.log(arr.pop()); //3
console.log(arr.pop()); //2
console.log(arr.pop()); //1
console.log(arr.pop()); //undefinded

 

shift() : 배열 맨 앞에 요소 추출하기

 

- 요소를 추출할 때 원본 배열도 함께 수정되기 때문에 미리 고려해야 함

const arr = [1, 2, 3];
console.log(arr.shift()); //1
console.log(arr.shift()); //2
console.log(arr.shift()); //3
console.log(arr.shift()); //undefinded

 

slice() : 배열 특정위치의 요소 추출하기

- 시작와 끝을 지정하여 배열요소를 추출

배열.slice(시작 인덱스, 끝 인덱스)
const arr = ['멜론', '레몬', '소스', '사과', '주스'];
console.log(`과일이 아닌 요소는 ${arr.slice(2,3)}과 ${arr.slice(4,5)}입니다.`);
console.log(arr.slice(0, 10));

//과일이 아닌 요소는 소스과 주스입니다.
//["멜론", "레몬", "소스", "사과", "주스"]

 

splice() : 배열 인덱스로 특정 요소 수정하기 

- 특정 위치의 요소를 삭제하거나 수정할 수 있음

배열.splice(시작인덱스, 삭제할 요소의 갯수, 추가될 요소들...)

- 시작인덱스 : 필수값이며 배열 요소가 변경될 시작지점. 반드시 배열의 길이보다 작아야 유효함

- 삭제할 요소의 갯수 : 시작 인덱스의 위치부터 삭제하고자 하는 갯수만큼 제거

- 추가될 요소 : 시작인덱스부터 해당 요소들이 추가됨

const fruits = ['멜론', '레몬', '소스', '사과', '주스'];

fruits.splice(4, 1); //['멜론', '레몬','소스','사과']
fruits.splice(4, 0, '포도') // ['멜론', '레몬','소스','사과', '포도']
fruits.splice(2, 1, '딸기', '석류', '수박'); //['멜론', '레몬','딸기','석류','수박','사과', '포도']
console.log(fruits);

- 삭제할 갯수를 지정하지 않으면 추출되는 요소가 없음

 

 

indexOf() : 배열의 특정요소 위치 확인하기

배열.indexOf(검색할 값, 시작 인덱스)

- 첫번째 인자값을 배열 내부에서 검색하다가 값이 일치하는 경우 해당인덱스를 반환

- 두번째 인자인 시작인덱스는 필수값은 아니지만, 그안에 숫자형 값을 넣으면 indexOf는 숫자형 값의 인덱스부터 찾음

- 만약 찾는 값이 없다면 숫자 -1을 반환

const arr = ['Jay', 'Joy', 'Vivian', 'Mark', 'Elin', 'Sam'];

console.log(`"Vivan" is in this index ${arr.indexOf('Vivian')}`);
console.log(`"Vivian" is not here, look this value ${arr.indexOf('Vivian', 3)}`);

// "Vivan" is in this index 2
// "Vivian" is not here, look this value -1

 

 

forEach() : 배열 순환하기

- 배열 내부요소를  순환하면서 각 요소에 대해 콜백함수를 실행

배열.forEach( 콜백함수 )
const arr = [
    { id: 0, name: 'RED', age: 6 },
    { id: 0, name: 'ORANGE', age: 3 },
    { id: 0, name: 'YELLOW', age: 5 },
    { id: 0, name: 'GREEN', age: 2 }
];

arr.forEach((el) => {
    console.log(el.name);
})

//RED
//ORANGE
//YELLOW
//GREEN

 

 

sort() : 배열 정렬하기 

- 배열 내부요소를  원하는 순서대로 정렬 (인자로 비교함수를 대입하여 정렬), 오름차순, 내림차순

배열.for(function(a,b) {
     return 비교값;
})
const numArr1 = [2, 0, 3, 4, 1];
const numArr2 = [2, 0, 3, 4, 1];
const objArr = [
    { id: 2, name: 'red' },
    { id: 0, name: 'brown' },
    { id: 3, name: 'black' },
    { id: 4, name: 'green' },
    { id: 1, name: 'blue' }
];

numArr1.sort(function(a, b) { return a - b });
numArr2.sort(function(a, b) { return b - a });
objArr.sort(function(a, b) {
    if (a.name > b.name) return 1;
    else if (b.name > a.name) return -1;
    else return 0;
});

console.log(`오름차순 : ${numArr1}`);
console.log(`내림차순 : ${numArr2}`);
console.log(objArr);


//오름차순 : 0,1,2,3,4
//내림차순 : 4,3,2,1,0
//[{ id: 2, name: 'red' },
//  { id: 0, name: 'brown' },
//  { id: 3, name: 'black' },
//  { id: 4, name: 'green' },
//  { id: 1, name: 'blue' }]