배열은 순서가 중요합니다.
배열의 선언과 초기화
세가지 경우가 있어요
바로 값을 넣는 경우와
빈 배열을 생성하는 경우
또는 new Array로 생성하는 경우입니다.const number = [1,2,3,4,5]; console.log(number[0]); let array = new Array(2); // size console.log(array); array = new Array(1,2,3,4,5); console.log(array);
갯수 추가,수정,삭제
배열[인덱스 번호]로 수정하거나 추가합니다
삭제 시는 delete 배열[인덱스번호]를 해줍니다.number[3] = -4; // 수정 number[5] = 7; // 추가 console.log(number.length,number); number[8] = 7; console.log(number.length,number); delete number[1] // 삭제 console.log(number.length,number);
인덱스 번호와 포함되어 있는지 확인하는 함수
배열.indexOf('배열에 포함되어있는지 알고 싶은 글자') > 해당 글자가 있는 인덱스 번호 리턴
배열.includes('배열에 포함되어있는지 알고 싶은 글자') > 해당 글자 여부 리턴 T /Flet name1 = ['릭터','릭','터','rickter']; console.log(name1); let name2 = new Array('rick','ter','hi'); console.log(name2); console.log(name1.indexOf('릭터')); // 있으면 1 console.log(name2.indexOf('릭터')); // 없으면 -1 console.log(name1.includes('릭터')); // 있으면 true 없으면 false console.log(name2.includes('ter'));
추가 삭제
unshift() 는 맨 앞에 추가
push() 는 맨 뒤에 추가
shift()는 첫 번째 아이템 삭제
pop() 은 마지막 아이템 삭제name1.push('하이'); // 맨 뒤에 추가 console.log(name1, name1.length); name1.unshift('hello'); // 맨 앞에 추가 let frist = name1.shift(); // 첫번째 아이템 삭제 console.log(frist,name1); let last = name1.pop(); // 마지막 아이템 삭제 console.log(last,name1);특정한 index에서 삭제 및 추가
특정한 인덱스에서 count 만큼 삭제
splice(index,count)
const deleted = name1.splice(1,1); console.log(name1 , "-",deleted);특정한 인텍스에서 추가
splice(index,count,추가할 것들)
name1.splice(1,0,'헬로우','하하'); console.log(name1);일 부분으로 새로운 배열을 만들기
slice(0,2)는 인덱스 0 에서 2까지 0, 1 번째 것이 들어갑니다.
그리고 -3은 뒤에서 -1 -2 -3 까지 들어갑니다.let name3 = name1.slice(0,2); console.log(name3,"-",name1); name3 = name1.slice(-3) // - 붙으면 뒤쪽 부터 console.log(name3,"-",name1);
배열 합치기
배열1.concat(배열2)을 사용합니다.
const name4 = name1.concat(name2); console.log(name4);
배열 역순 만들기
배열.reverse() 사용합니다.
const rname = name4.reverse(); console.log(rname);
배열을 문자열로 만들기(합치기)
배열.join(''); ()안에는 구분자!
let strName = name4.join(', '); console.log(strName);
배열을 sort 정렬
string의 경우
string배열.sort(); 사용
const fruits = [ 'Banana','Apple','Orange','Mango']; console.log(fruits.sort());숫자의 경우
화살표 함수 사용해서
두 개 숫자를 가져와서 비교해줍니다
앞의 숫자와 뒤의 숫자를 비교 후
앞의 숫자 - 뒤의 숫자 >0인 경우 자리 바꿔줍니다.(오름차 경우)const numbers = [101,2,102,30,42,51]; numbers.sort((n1,n2)=> n1 - n2); // 오름차순 console.log(numbers); numbers.sort((n1,n2)=> n2 - n1); // 내림차순객체의 경우
숫자 경우
const items = [ {name:'Apple',price:100}, {name:'Orange',price:50}, {name:'Banana',price:200}, ] items.sort((n1,n2) => n1.price - n2.price); // 오름차 순 console.log(items); items.sort((n1,n2) => n2.price - n1.price); // 내림차 순 console.log(items);문자 경우
문자열배열1.localeCompare(문자열배열2);
문자열 비교는 따로 메서드가 있어서 위의 메서드를 사용해주면 됩니다.items.sort((n1,n2) => n1.name.localeCompare(n2.name)); // 오름차 순 console.log(items); items.sort((n1,n2) => n2.name.localeCompare(n1.name)); // 내림차 순 console.log(items);
array 순회
for문 for~of 문 forEach문
for문은 i를 인덱스 번호로 해서 하나씩 배열을 꺼낼 수 있고for ~ of는 배열에 있는 모든 것을 다 꺼낼 때 좋습니다.
forEach는 name은 배열에서 하나씩 꺼내져 나오는 것
하나씩 꺼내져 나오는 인덱스의 번호는 index에 있고 array는 꺼내져 나올 배열입니다.(forEach()를 호출한 배열이죠)for(let i =0;i<name4.length;i++){ console.log(name4[i]); } for(name of name4){ console.log(name); } name4.forEach((name,index,array) => { console.log(`${array.length}명 중 ${index}번째인 ${name}입니다.`); });
map()
고차원 함수인 map은 함수를 인자로 받고 []로 리턴 해줍니다.
그러므로 값을 하나씩 돌면서 바꾸고 []로 받을때 유용합니다.
예를 들어 밑의 코드처럼 배열에 있는 모든 수에 곱하기 2를 해야하는 경우처럼요const nums = [1,2,3,4,5]; const doubled = nums.map((num) => num *2);
filter()
는 말 그대로 걸러주는 역할을 합니다
조건을 걸어주고 해당하는 경우의 수를 모아서 []로 리턴해줍니다.const nums = [1,2,3,4,5]; const evenNumbers = nums.filter((num) => num % 2 ===0); console.log(evenNumbers); // [2,4]
reduce(함수,초기값)
reduce는 하나로 줄여주는 건데요
앞의 수들의 내용을 하나로 바꿔주려고 사용을 합니다.const sum = evenNumbers.reduce((acc,cur) => { return acc + cur },0); console.log(sum)이런 식으로 위 조건식에서 골라진 []에 수를 acc에 더해서 하나의 수로 만드는 것 처럼요
보통 acc에 계속 더해진 값이 저장되고 cur는 evenNumbers에서 넘어오는 값입니다.
그래서 계속 값이 넘어오면 acc에 더해지는거죠
만약 이런 문제가 나온다면
1~5까지의 숫자 중 2의 배수만 골라서 2배 한 수의 합은?
위에 쓴 함수들(filter,map)은 []로 리턴 되기 때문에 계속 이어서 쓰기가 가능합니다.const nums = [1, 2, 3, 4, 5] .filter((num) => num % 2 === 0) .map((num) => num * 2) .reduce((acc, cur) => acc + cur,0); console.log(nums)이렇게 이어쓰기가 가능합니다.