javascript - 배열

김동하·2020년 9월 21일
0

javascript

목록 보기
23/58
post-thumbnail

array

const a = [];
console.log(typeof(a)); 

빈 배열의 타입은 객체다.

slice, splice

array.slice(시작, 끝)

const arr = [1, 2, 3]
const arr2 = arr.slice(0, 1)

console.log(arr2) // 1

끝으로 정한 인덱스 바로 앞 요소까지. 시작 인덱스와 끝 인덱스 같으면 빈 배열. 새로운 요소 포함한 배열 반환.

array.splice(시작, 삭제할 요소 개수, 추가할 요소)

const arr = [1, 2, 3, 4, 5, 6]

const arr2 = arr.splice(4, 2, "a", "b" )

console.log(arr) // [1, 2, 3, 4, "a", "b"]

// 인덱스 4(arr에서 5부터) 부터 2개를 삭제하고 "a","b"를 추가한다.

console.log(arr2) // [5, 6]


const arr3 = arr.splice(2)

console.log(arr) // [1, 2]

console.log(arr3) // [3, 4, "a", "b"]

// 시작 인덱스만 지정할 경우 시작 인덱스 포함 뒤 요소 모두 삭제한다. 

원본을 수정한다.

indexof / includes

const arr = [1, 2, 3, 4, 5, 6]
console.log(arr.indexOf(1)) // 0

인자가 위치한 인덱스를 반환한다. 없으면 -1을 반환한다.

const arr = [1, 2, 3, 4, 5, 6]
console.log(arr.includes(1)) // true

배열에 요소가 있는지 체크! 없으면 false

QUIZ

매일 헷갈렸던 map, filter, reduce 등 연습할 수 있는 좋은 예제!

class Student {
  constructor(name, age, enrolled, score) {
    this.name = name;
    this.age = age;
    this.enrolled = enrolled;
    this.score = score;
  }
}
const students = [
  new Student('A', 29, true, 45),
  new Student('B', 28, false, 80),
  new Student('C', 30, true, 90),
  new Student('D', 40, false, 66),
  new Student('E', 18, true, 88),
];

Q5. find a student with the score 90

const result = students.find((student) => student.score === 90)
console.log(result.name) // C

Q6. make an array of enrolled students

const result = students.filter((student) => student.enrolled)

console.log(result) 

filter는 true값 해당하는 요소로 새로운 배열을 만든다.

Q7. make an array containing only the students' scores
// result should be: [45, 80, 90, 66, 88]

const result = students.map((student) => student.score)

console.log(result) // [ 45, 80, 90, 66, 88 ]

map은 각 배열 요소을 변환한다.

Q8. check if there is a student with the score lower than 50


const result = students.some((student) => student.score < 50)

console.log(result) // true

some은 callback 함수 중 return true가 있는지 확인한다. 리턴값은 true. every는 배열 모든 요소가 조건을 true 해야한다.

Q9. compute students' average score

const result = students.reduce((prev, curr) =>{
  console.log("------")
  console.log(prev)
  console.log(curr)
})

reduce는 배열의 모든 요소를 호출한다. return 값은 누적된 값을 뱉는다. 처음엔 prev 는 A, curr은 B 그리고 prev 는 undefined curr는 C 가 된다. prev가 undefined인 이유는 return값을 설정하지 않아서 그런다.

const result = students.reduce((prev, curr) =>{
  console.log("------")
  console.log(prev)
  console.log(curr)
  return curr
}, 0)

리턴을 curr로 해주면 curr 이 prev가 되어 누적되는 것을 알 수 있다.

const result = students.reduce((prev, curr) =>{
  return prev + curr.score
},0)

console.log(result) // 369

prev가 0에서 시작해서 curr.score 값인 45를 더하고 거기에 다음 curr.scor를 더하면서 최종적으로 369를 리턴한다.

Q10. make a string containing all the scores
// result should be: '45, 80, 90, 66, 88'

const result = students.map(student => student.score).join()
console.log(result) // '45, 80, 90, 66, 88'

map은 요소 자체를 변환하기 때문에 api를 섞어서 사용가능!

출처 : https://www.youtube.com/watch?v=3CUjtKJ7PJg&list=PLv2d7VI9OotTVOL4QmPfvJWPJvkmv6h-2&index=9

profile
프론트엔드 개발

0개의 댓글