표준 내장 객체 내용은 다 외울건 아니고 그냥 이런게 있구나... 나중에 쓸 일 있으면 참고하려고 작성합니다.
새로운 데이터를 반환하는지, 원본 데이터를 수정하는지를 확인하기!
undefined
가 출력된다.const arr = ['A', 'B', 'C', 'D']
console.log(arr[0]); //A
console.log(arr.at(0)); //A
console.log(arr[arr.length - 1]); //D
console.log(arr.at(-1)); //D
console.log(arr[-1]); //undefined
const arr1 = ['A', 'B', 'C']
const arr2 = ['D', 'E', 'F']
const arr3 = arr1.concat(arr2)
const arr4 = [...arr1, ...arr2] //concat 메소드 대신 전개 연산자를 사용할 수도 있음
console.log(arr3) //["A","B","C","D","E","F"]
console.log(arr4) //["A","B","C","D","E","F"]
and
의 느낌const arr = [1, 2, 3, 4]
const isValid = arr.every(item => item < 5)
console.log(isValid) //true
or
의 느낌const arr = [1, 2, 3, 4]
const isValid = arr.some(item => item > 3)
console.log(isValid) //true
const isValid = arr.some(item => item > 5)
console.log(isValid) //false
const numbers = [1, 20, 7, 9, 104, 60, 5]
const filteredNumbers = numbers.filter(number => number < 30)
console.log(filteredNumbers) //[1,20,7,9,5]
예제
users 객체에서 19세 이상의 성인들만 필터링하기const users = [ { name: 'Neo', age: 85 }, { name: 'Amy', age: 22 }, { name: 'Lewis', age: 11 } ] const adults = users.filter(user => user.age >= 19) console.log(adults) //출력 결과 //[ { name: 'Neo', age: 85 }, { name: 'Amy', age: 22 } ]
const arr = [5, 8, 139, 12, 44]
const foundItem = arr.find(item => item > 10)
console.log(foundItem) //139
const arr = [5, 8, 139, 12, 44]
const index = arr.findIndex(item => item > 10)
console.log(index) //2
const arr = [1, 2, [3, 4]]
console.log(arr.flat()) //[1, 2, 3, 4]
const arr = [1, 2, [3, 4, [5, 6]]]
console.log(arr.flat()) //[1, 2, 3, 4, [5, 6]]
console.log(arr.flat(2)) //[1, 2, 3, 4, 5, 6]
flat(Infinity)
라고 작성하면 된다.const arr = ['A', 'B', 'C']
//forEach 메소드
arr.forEach(item => console.log(item))
//for 반복문
for (let i = 0; i < arr.length; i++) {
console.log(arr[i])
}
//출력 결과는 동일함
//A
//B
//C
const arr = [1, 2, 3]
console.log(arr.includes(2)) //true
참조형 데이터의 특징
참조형(객체, 배열, 함수...)은 데이터의 생김새가 똑같아도 다른 데이터일 수 있다.const users = [ { name: 'Neo', age: 85 }, { name: 'Amy', age: 22 }, { name: 'Lewis', age: 11 } ] console.log(users.includes({ name: 'Neo', age: 85 })) //false // 객체 데이터는 똑같이 값을 작성하더라도 해당 데이터가 원본과 완전히 똑같다고 판단되지 않을 수 있다. // 데이터가 저장된 메모리 주소가 다르기 때문 const neo = users[0] console.log(users.includes(neo)) //true
',' 콤마
를 넣어 반환const arr = ['Apple', 'Banana', 'Cherry']
console.log(arr.join()) //"Apple,Banana,Cherry"
console.log(arr.join(', ')) //"Apple, Banana, Cherry"
console.log(arr.join('/')) //"Apple/Banana/Cherry"
const fruits = ['Apple', 'Banana', 'Cherry']
console.log(fruits.pop()) //"Cherry"
console.log(fruits) //["Apple","Banana"]
const fruits = ['Apple', 'Banana', 'Cherry']
const newLength = fruits.push('Orange')
console.log(newLength) //4
console.log(fruits) //['Apple', 'Banana', 'Cherry', 'Orange']
fruits.push('Mango', 'Strawberry')
console.log(fruits) //['Apple', 'Banana', 'Cherry', 'Orange', 'Mango', 'Strawberry']
const arr = ['A', 'B', 'C']
console.log(arr.shift()) //'A'
console.log(arr) //['B', 'C']
const arr = ['A', 'B', 'C']
console.log(arr.unshift('X')) //4
console.log(arr) //['X', 'A', 'B', 'C']
const numbers = [1, 2, 3, 4]
const newNumbers = numbers.map(item => item * 2)
console.log(newNumbers) //[2,4,6,8]
객체 예제
const users = [ { name: 'Neo', age: 85 }, { name: 'Amy', age: 22 }, { name: 'Lewis', age: 11 } ] const newUsers = users.map(user => ({ ...user, isValid : true, email : null })) console.log(newUsers)
예제
const numbers = [1, 2, 3] const sum = numbers.reduce((acc, cur) => acc + cur, 0) console.log(sum) //6
- reduce 메소드는 2개의 인수를 받는다.
콜백함수
와초기값
- 콜백함수는 2개의 인수를 받는데
accumulator
,currentValue
accumulator
/acc
: 누산기 (누적되는 값)
reduce 메소드 입력 시에 초기값을 설정해주었다면 이 값이 첫번째 콜백의 acc로 들어가고, 그 이후로는 이전 콜백의 return 값이 들어간다.currentValue
/cur
: 현재 처리할 요소. 배열의 요소가 순서대로 들어간다.
예제
const users = [ { name: 'Neo', age: 85 }, { name: 'Amy', age: 22 }, { name: 'Lewis', age: 11 } ] //총 나이 계산 const totalAge = users.reduce((acc,cur) => acc + cur.age, 0) console.log(totalAge) //118 console.log(`평균 나이 : ${(totalAge / users.length).toFixed(1)}세`) //평균 나이 : 39.3세 //모든 이름 추출 const nameArray = users.reduce((acc, cur) => { acc.push(cur.name) return acc }, []) console.log(nameArray) //["Neo","Amy","Lewis"] console.log(nameArray.join(', ')) //"Neo, Amy, Lewis"
- 모든 이름 추출 더 간단하게 코드 정리
join 메소드를 reduce 메소드 실행 후 나온 리턴 값에 바로 붙여 작성해서 names 라는 변수에 배열이 아닌 문자열 형태로 저장하기const names = users .reduce((acc, cur) => { acc.push(cur.name) return acc }, []) .join(', ') console.log(names) //"Neo, Amy, Lewis"
- 메소드 체이닝 : 연속적인 코드 줄에서 개체의 메소드를 반복적으로 호출하는 것. 메소드가 객체를 반환하면 그 반환 값(객체)가 또 다른 메소드를 호출할 수 있다.
- 메소드 체이닝이 잘 보일 수 있도록 코드 라인 정리도 같이 해주면 좋다.
const arr = ['A', 'B', 'C']
const reversed = arr.reverse()
console.log(reversed) //["C","B","A"]
console.log(arr) //["C","B","A"]
const arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
console.log(arr.slice(0,3)) //['A', 'B', 'C']
console.log(arr.slice(4, -1)) //['E', 'F']
console.log(arr.slice(4)) //['E', 'F', 'G']
console.log(arr) //['A', 'B', 'C', 'D', 'E', 'F', 'G']
const numbers = [4, 17, 2, 103, 3, 1, 0]
numbers.sort()
console.log(numbers) //[0,1,103,17,2,3,4]
//문자열로 변환해서 유니코드 포인트 순서대로 정렬됨
numbers.sort((a, b) => a - b)
console.log(numbers) //[0,1,2,3,4,17,103]
//첫번째, 두번째 요소를 각각 a,b에 넣고 a-b의 값이 음수이면
//a가 더 작은 값이라고 판단, a에 더 작은 인덱스 값을 부여
//즉, 작은 값부터 차례대로 정렬될 수 있도록
numbers.sort((a, b) => b - a)
console.log(numbers) //[103,17,4,3,2,1,0]
//첫번째, 두번째 요소를 각각 a,b에 넣고 b-a의 값이 양수이면
//a가 더 작은 값이라고 판단, a에 더 큰 인덱스 값을 부여
//즉, 큰 값부터 차례대로 정렬될 수 있도록
예제
const users = [ { name: 'Neo', age: 85 }, { name: 'Amy', age: 22 }, { name: 'Lewis', age: 11 } ] //나이 적은 순으로 정렬 users.sort((a, b) => a.age - b.age) console.log(users) //[ { name: 'Lewis', age: 11 }, { name: 'Amy', age: 22 }, { name: 'Neo', age: 85 } ] //나이 많은 순으로 정렬 users.sort((a, b) => b.age - a.age) console.log(users) //[ { name: 'Neo', age: 85 }, { name: 'Amy', age: 22 }, { name: 'Lewis', age: 11 } ]
예제 1
const arr = ['A', 'B', 'C'] arr.splice(2, 0, 'X') //2번 인덱스 자리에, 아무것도 삭제하지 않고, 'X'라는 요소를 추가한다. console.log(arr) //['A', 'B', 'X', 'C']
예제 2
const arr = ['A', 'B', 'C'] arr.splice(1, 1) //1번 인덱스 자리에, 1개를 삭제한다. console.log(arr) //['A', 'C']
예제 3
const arr = ['A', 'B', 'C'] arr.splice(1, 2, 'X', 'Y') //1번째 인덱스부터, 2개 요소를 삭제하고, 'X', 'Y' 요소를 추가한다. console.log(arr) //['A', 'X', 'Y']
const arrayLike = {
0: 'A',
1: 'B',
2: 'C',
length: 3
}
Array.from(arrayLike).forEach(item => console.log(item))
//'A'
//'B'
//'C'
const array = ['A', 'B', 'C']
const arraylike = {
0: 'A',
1: 'B',
2: 'C',
length: 3
}
console.log(Array.isArray(array)) //true
console.log(Array.isArray(arraylike)) //false
정리가 잘 된 글이네요. 도움이 됐습니다.