- 배열 내장함수2022년 06월 04일 00시 35분 09초에 업로드 된 글입니다.작성자: 원2728x90반응형
indexOf
=> 원하는 항목이 몇 번째 원소인지 찾아주는 함수
// indexOf const superheroes = ['아이언맨', '캡틴 아메리카', '토르', '닥터 스트레인지']; const index = superheroes.indexOf('토르'); console.log(index); // result : 2
findIndex
배열 안에 있는 값이 숫자, 문자열, 또는 불리언일때 찾고 싶은 항목이 몇번쨰 원소인지 ? indexOf
배열 안의 값이 객체, 배열이면 ? findIndex
const memu = [ { id: 1, text: '모듬회', done: true }, { id: 2, text: '삼겹살', done: true }, { id: 3, text: '탕수육', done: true }, { id: 4, text: '스시', done: true } ]; const getIndex = memu.findIndex(get => get.id === 4); console.log(getIndex); // result : 3
find
findIndex와 비슷 해당 값 자체를 반환
const memu = [ { id: 1, text: '모듬회', done: true }, { id: 2, text: '삼겹살', done: true }, { id: 3, text: '탕수육', done: true }, { id: 4, text: '스시', done: true } ]; // find const getFind = memu.find(find => find.id === 3); console.log(getFind); // result : {id: 3, text: '탕수육', done: true}
filter
배열에서 특정 조건을 만족하는 값들만 따로 추출하여 새로운 배열을 만듬
filter 함수에 넣는 파라미터는 조건을 검사하는 함수를 넣고 이 함수의 파라미터로 각 원소의 값을 받아옴
const memu = [ { id: 1, text: '모듬회', done: true }, { id: 2, text: '삼겹살', done: true }, { id: 3, text: '탕수육', done: true }, { id: 4, text: '스시', done: false } ]; // filter const getFilter = memu.filter(filter => filter.done === false); //아래와 같은 코드로도 가능 //const getFilter = memu.filter(filter => !filter.done); console.log(getFilter); // result : 하나의 배열을 가져옴 // [{...}] // 0: {id: 4, text: '스시', done: false} // length: 1 // [[Prototype]]: Array(0)
splice
배열에서 특정 항목을 제거할 때 사용
3을 지우기 위해 해다 index를 알아내고 지움
첫번째 파라미터 => 지울 인덱스
두번째 파라미터 => 지울 인덱스로 부터 몇개?
// splice const numss = [1, 2, 3, 4, 5]; const numssIndex = numss.indexOf(3); numss.splice(numssIndex, 1); console.log(numss); // result : [1, 2, 4, 5]
slice
splice 와 비슷하지만 slice 는 기존의 배열은 건들이지 않음
첫번째 파라미터 => 어디서부터 자를지
두번째 파라미터 => 어디까지 자를지 (해당 인덱스 앞까지)
// slice const numbers = [10, 20, 30, 40, 50]; const sliced = numbers.slice(0, 2); console.log(numbers); // result : [10, 20, 30, 40, 50] console.log(sliced); // result : [10, 20]
shift
첫번째 원소를 배열에서 추출, 해당 원소는 배열에서 사라짐
pop 와 비슷하지만 다름
// shift const numbers = [10, 20, 30, 40, 50]; const shifted = numbers.shift(); console.log(shifted); // result : [20, 30, 40, 50] console.log(numbers); // result : 10
pop
배열의 맨 마지막의 원소를 추출, 해당 원소는 배열에서 사라짐
아래의 값은 위 의 shift 와 연결해서 10이 사라져 있는 상태임
// pop const poped = numbers.pop(); console.log(poped); // result : [20, 30, 40] console.log(numbers); // result : 50
unshift
shift 의 반대, 배열의 맨 앞에서 새 원소를 추가
// unshift const newNum = [1, 2, 3, 4, 5]; newNum.unshift(7); console.log(newNum); // result = [7, 1, 2, 3, 4, 5]
concat
여러개의 배열을 하나로 합침
배열에 변화를 주지 않음 (기존의 상태를 유지)
// concat const arr1 = [1, 2, 3]; const arr2 = [4, 5, 6]; const conscated = arr1.concat(arr2); console.log(conscated); // result : [1, 2, 3, 4, 5, 6]
join
배열 안의 값들을 문자열 형태로 합침
// join const arr3 = [1, 2, 3, 4, 5]; console.log(arr3.join()); console.log(arr3.join(' ')); console.log(arr3.join(', ')); // result : 1,2,3,4,5 // result : 1 2 3 4 5 // result : 1, 2, 3, 4, 5
reduce
첫번째 파라미터 => accumlator, current 를 파라미터로 가져와서 결과를 반환하는 콜백 함수
두번째 파라미터 => reduce 함수에서 사용할 초깃값
함수 방식 => accumlator 에 배열안에 있는 current 의 값을 accumlator 와 currnet 를 더한 값을 저장 후 연산을 계속함
값이 acc 에 누적되어감, 연산 방식을 바꾸어서 acc 에 카운트를 입힐 수도 있음, 저장소라고 생각하면 편할듯
// reduce const addNumbers = [1, 2, 3, 4, 5]; const getAddNums = addNumbers.reduce((acc, currnet) => acc + currnet, 0); console.log(getAddNums); //result : 15
아래와 같이 코드를 고쳐 보면 acc 가 어떻게 동작하는지 알 수 있음
const addNumbers = [1, 2, 3, 4, 5]; let sum = addNumbers.reduce((acc, currnet) => { console.log({ acc, currnet }); return acc + currnet; }, 0 );
acc에 누적이 되어가는 걸 볼 수 있음
예제)
배열에서 숫자 10 보다 큰 숫자의 갯수를 구하라.
function add(nums) { return nums.reduce((acc, current) => { if (current > 10) { return acc + 1; } else { return acc; } }, 0); } const count = add([1, 2, 3, 5, 10, 20, 30, 40, 50, 60]); console.log(count); //result : 5
해당 배열의 값을 가져온 currnet 가 10 보다 클 때, acc 에 +1 을 해줌으로써 10 보다 큰 숫자의 카운트를 저장,
acc 로 콜백 > result = 5
굿?
728x90반응형'Language > Java Script' 카테고리의 다른 글
여러조건 비교 includes (0) 2024.09.05 클로저(Closure) (0) 2024.07.25 프로토타입과 클래스 (0) 2022.06.04 반복문 for...in (0) 2022.06.03 reduce (0) 2022.05.20 spread 와 rest (0) 2022.05.19 다음글이 없습니다.이전글이 없습니다.댓글