React/한입크기로 잘라먹는 리액트

[javaScript] 배열 메서드

냠냠쿠 2024. 12. 31. 12:01
728x90

 

1. 요소 조작

push 배열 맨 뒤에 추가 + 배열의 길이 반환  arr1.push(1);
arr1.push(3, 4, 5, 6);
pop 배열의 맨 뒤 요소를 반환한 뒤 삭제  arr1.pop();
shift 배열의 맨 앞 요소를 반환한 뒤 삭제 arr1.shift();
unshift 배열의 맨 앞에 요소 추가 + 배열의 길이 반환 
push와 pop보다 속도가 느림 
arr.unshift(0);
slice 배열의 특정 범위를 잘라 새로운 배열로 반환
원본 배열의 값 변경 X
let test = arr1.slice(2,5); (잘라낼 인덱스 +1 해야함)
arr1.slict(2); 끝까지 자를거면 잘라낼 인덱스 생략
arr1.slice(-1); 뒤에서 하나만 자르기 
concat 이어붙여 새로운 배열 반환  let concatTest = arr1.concat(arr2);

 

2. 순회와 탐색

forEach 모든 요소를 순회, 각 요소에 동작을 수행  arr1.foreach(function(item, idex, arr) {
   arr2.push(item*2);
});
→ 콜백함수는 배열의 요소만큼 호출 
모든 배열을 돌면서 *2 
includes 배열에 특정 요소가 있는지 확인  arr.includes(3); //true or false
indexOf 특정 요소의 인덱스(위치)를 찾아 반환
(얕은비교) 특정 객체값을 찾아낼 수는 없어서 객체값을 찾으려면 findIndex을 써야함
arr1.indexOf(2); //2의 값을 찾아 해당 인덱스 반환 
findIndex 모든 요소를 순회하면서 콜백함수를 만족하는 특정 요소의 인덱스(위치)를 찾아 반환 let arr1 = [ 1, 2, 3 ];
arr1.findIndex( (item) => {
  if(item%2 !==0) return true; 
  //만족하는 값인 0이 반환 
});

위 함수를 아래와 같이 더 간단하게 가능

arr1.findIndex( (item) => item %2 !==0 );

만족하는 값이 없으면 -1 반환 
find 모든 요소를 순회하면서 콜백함수를 만족하는 요소를 찾아 그대로 반환  let arr = [ 
 { name : "홍길동"},
 { name : "김길동"},
];

arr.find( (item) => item.name ==="홍길동" );
// { name : "홍길동"}  (객체 자체가 반환)

 

 

3. 배열 변형

filter 기존 배열에서 조건을 만족하는 요소만 필터링하여 새로운 배열로 변환  arr = [
{ name : "홍길동", hobby:"축구"},
{ name : "김길동", hobby:"배구"},
{ name : "이길동", hobby:"축구"},
];
arr.filter( (item) => item.hobby ==="축구" );
// { name : "홍길동", hobby:"축구"},
// { name : "이길동", hobby:"축구"} 
// 조건에 만족하는 2개의 요소만 나옴 
map 배열의 모든 요소를 순회하면서 각 콜백함수를 실행하고 그 결과를 모아서 새로운 배열로 변환  let arr1 = [1,2,3];
conste result = arr1.map( (item, idx, arr) => {
  console.log(idx, item);

  return item * 2 //리턴을 시키면 새 배열을 반환해줌 
});

console.log(result); // [ 2, 4, 6 ] 


arr = [
{ name : "홍길동", hobby:"축구"},
{ name : "김길동", hobby:"배구"},
{ name : "이길동", hobby:"축구"},
];

let names = arr.map( (item) => item.name);
//이름만 있는 배열을 반환 

sort 배열 정렬 (사전순)
- 문자열이 아니라 숫자인경우 정상적으로 동작되지 않음
- 원본 배열 정렬 
arr.sort();

//숫자 오름차순 

arr.sort( (a, b) => {
   //오름차순
  if(a>b) {
     return 1 // b, a 배치 
   } else if(b>a) {
     return -1  // a, b 배치 
   }  else { //값이 같으면 자리 안바꿈 
     return 0;
   }
});


//숫자 내림차순 
arr.sort( (a, b) => {
  if(a>b) {
     return -1 
   } else if(b>a) {
     return 1  
   }  else { 
     return 0;
   }
});
toSorted 원본 배열은 두고 새 배열을 반환 
- 원본 배열 정렬X 
arr.toSorted();
join 배열의 모든 요소를 하나의 문자열로 합쳐서 반환  arr = ["hello", 'nice', 'to', 'meet', 'you'];
arr.join(); //hello,nice,to,meet,you

기본적으로 , 이지만 바꾸고싶다면
join("-") , join(" ") 등으로 바꿔쓰면 됨 

 

728x90