코드팩토리 JS

9. must know array functions

박성하하 2025. 12. 17. 21:54
728x90
반응형
/**
 * Array Functions
 */

let iveMembers = [
    '안유진',
    '가을',
    '레이',
    '장원영',
    '리즈',
    '이서'
];

console.log(iveMembers);

// push() , array 제일 끝에 요소 추가
console.log(iveMembers.push('코드팩토리'));     // 7 , push된 후 array의 length를 return함
console.log(iveMembers);        // [ '안유진', '가을', '레이', '장원영', '리즈', '이서', '코드팩토리' ]

// pop() , array 제일 끝 요소를 제거
console.log(iveMembers.pop());  // 코드팩토리 , 제거되는 요소를 리턴함
console.log(iveMembers);        // [ '안유진', '가을', '레이', '장원영', '리즈', '이서']

// shift() , array 제일 앞 요소를 제거
console.log(iveMembers.shift());    // 안유진 , 제거되는 요소를 리턴함
console.log(iveMembers);        // [ '가을', '레이', '장원영', '리즈', '이서' ]

// unshift() , array 제일 앞에 요소 추가
console.log(iveMembers.unshift('안유진')); // 7 , unshift된 후 array의 length를 return함
console.log(iveMembers);        // [ '안유진', '가을', '레이', '장원영', '리즈', '이서' ]

// splice , 첫번째 argument이상 두번째 argument미만의 항목들을
console.log(iveMembers.splice(0,3));    // [ '안유진', '가을', '레이' ]
console.log(iveMembers);    // [ '장원영', '리즈', '이서' ]

iveMembers = [
    '안유진',
    '가을',
    '레이',
    '장원영',
    '리즈',
    '이서'
];


// concat() , push와 비슷하지만 요소가 더해진 배열을 새 메모리에 저장하고 리턴하기때문에 할당하지 않으면 변하지 않는다.
console.log(iveMembers.concat('코드팩토리'));   // [ '안유진', '가을', '레이', '장원영', '리즈', '이서', '코드팩토리' ]
console.log(iveMembers);                       // [ '안유진', '가을', '레이', '장원영', '리즈', '이서' ]    변경x


// slice
console.log(iveMembers.slice(0,3));     // [ '안유진', '가을', '레이' ]
console.log(iveMembers);                // [ '안유진', '가을', '레이', '장원영', '리즈', '이서' ]   변경x


// spread operator
let iveMembers2 = [
    ...iveMembers,
]
console.log(iveMembers2);               // [ '안유진', '가을', '레이', '장원영', '리즈', '이서' ]

let iveMembers3 = [
    iveMembers,
]
console.log(iveMembers3);               // [ [ '안유진', '가을', '레이', '장원영', '리즈', '이서' ] ]   리스트 안에 리스트가 들어감

let iveMembers4 = iveMembers;
console.log(iveMembers4)                // [ '안유진', '가을', '레이', '장원영', '리즈', '이서' ]  동일하게 할당
console.log([...iveMembers] == iveMembers);     // false , 메모리 공간이 다름



// join
console.log(iveMembers.join());         // 안유진,가을,레이,장원영,리즈,이서   String값으로 반환
console.log(iveMembers.join('/'));      // 안유진/가을/레이/장원영/리즈/이서   구분값을 지정 가능



// sort()
// 오름차순
iveMembers.sort();
console.log(iveMembers);                // [ '가을', '레이', '리즈', '안유진', '이서', '장원영' ]
console.log(iveMembers.reverse());      // [ '장원영', '이서', '안유진', '리즈', '레이', '가을' ]  역순 정렬

// a,b를 비교했을때
// 1) a를 b보다 나중에 정렬하려면(뒤에두려면) 0 보다 큰 숫자를 반환
// 2) a를 b보다 먼저   정렬하려면(앞에두려면) 0보다 작은 숫자를 반환
// 3) 원래 순서를 그대로 두려면 0을 반환
let numbers = [1,9,7,5,3];
numbers.sort((a,b)=>{
    return a > b ? 1 : -1;
})
console.log(numbers);       // [ 1, 3, 5, 7, 9 ]   오름차순 정렬

numbers.sort((a,b)=>{
    return a > b ? -1 : 1;
})
console.log(numbers);       // [ 9, 7, 5, 3, 1 ]  내림차순 정렬  



// map()    , 요소를 순회하며 값을 리턴한다 , 원본 유지 새값리턴
console.log(iveMembers.map((x) => x));      // [ '장원영', '이서', '안유진', '리즈', '레이', '가을' ]
console.log(iveMembers.map((x) => `아이브 : ${x}`));
/**
 * [
  '아이브 : 장원영',
  '아이브 : 이서',
  '아이브 : 안유진',
  '아이브 : 리즈',
  '아이브 : 레이',
  '아이브 : 가을'
]
 */
console.log(iveMembers.map((x)=>{
    if(x === '안유진'){
        return `아이브 : ${x}`
    } else{
        return x;
    }
}))
/**
 * [ '장원영',
 *  '이서',
 *  '아이브 : 안유진',
 *  '리즈',
 *  '레이',
 *  '가을' ]
 */



// filter()  , 조건에 맞는 값만 리턴  , 원본 유지
numbers = [1,8,7,6,3];
console.log(numbers.filter((x) => true));       // [ 1, 8, 7, 6, 3 ]
console.log(numbers.filter((x) => false));      // [];
console.log(numbers.filter((x) => x % 2 === 0)) // [8,6]
console.log(numbers);


// find()  , 조건에 맞는 '첫번쨰'값만 리턴
console.log(numbers.find((x)=> x % 2 === 0));  //8


// fincIIndex()  , 조건에 맞는 '첫번째'값의 '인덱스'를 리턴
console.log(numbers.findIndex((x) => x % 2 === 0));  // 1

★ ★ ★
// reduce()
console.log(numbers.reduce((p , n) => p+n, 0));     // 25 

 

 

 

 

 

 

728x90
반응형

'코드팩토리 JS' 카테고리의 다른 글

11. copy by value and reference  (0) 2025.12.22
10.object  (0) 2025.12.22
7.coercion  (0) 2025.12.11
6. Loops  (0) 2025.11.17
5. if , switch  (0) 2025.11.02