javascript

18. Array APIs

으누아빠 2020. 6. 30. 11:44
반응형

Array APIs

Q1. make a string out of an array 배열을 String으로 변환

키워드: join(separator)

  • 메서드는 배열의 모든 요소를 연결해 하나의 문자열로 반환
  • separator:배열의 각 요소를 구분할 문자열을 지정. 생략하면 배열의 요소들이 쉼표로 구분
  const fruits = ['apple', 'banana', 'orange'];
  let result = fruits.join();
  console.log(result); //결과값: apple,banana,orange

  result = fruits.join('@'); 
  console.log(result); //결과값: apple@banana@orange

Q2. make an array out of a string 문자열을 배열로 변환

키워드: split()

  • String 객체를 지정한 구분자를 이용하여 여러 개의 문자열로 나누는 메서드
  • str.split(separator,limit)
  • separator: 문자열 또는 정규표현식 separator를 이용하 문자를 구분
  • limit: 리턴받을 배열의 사이즈를 지정할 수 있음 [선택]
  • 반환값 Array
const fruits = '🍎, 🥝, 🍌, 🍒';

let result = fruits.split(',');
console.log(result); //결과값: [ '🍎', ' 🥝', ' 🍌', ' 🍒' ]

result = fruits.split(',', 2);
console.log(result); //결과값: [ '🍎', ' 🥝' ]

Q3. make this array look like this: [5, 4, 3, 2, 1] 배열의 순서를 반대로 노출

키워드: reverse()

  • 메서드는 배열의 순서를 반전하며 기존의 배열 자체의 순서도 변환시킴
const array = [1, 2, 3, 4, 5];

const result = array.reverse();

console.log(result); //결과값:[ 5, 4, 3, 2, 1 ]
console.log(array); //결과값:[ 5, 4, 3, 2, 1 ]

Q4. make new array without the first two elements 첫번째와 두번째 요소를 제외한 나머지 요소들을 이용 새로운 배열 생성

키워드: slice()

  • 배열의 특정한 부분을 반환하는 메서드이며 기존의 배열 자체는 변환하지 않는다.
  • arr.slice(begin, end)
  • begin: 시작 index
  • end: 종료 index (this is exclusive of the element at the index 'end'[이것은 인덱스 'end'의 요소를 배제한다.]) 즉 end index는 포함하지 않음(선택)
  • 값을 입력하지 않으면 마지막까지 출력
const array = [1, 2, 3, 4, 5];

const result = array.slice(2);

console.log(result); ////결과값:[ 3, 4, 5 ]
const students = [
    {name:'A', age:29, enrolled:true, score:45},
    {name:'B', age:28, enrolled:false, score:80},
    {name:'C', age:30, enrolled:true, score:90},
    {name:'D', age:40, enrolled:false, score:66},
    {name:'E', age:18, enrolled:true, score:88},
];

Q5. find a student with the score 90 90점인 학생을 찾는방법

키워드: find()

  • 구문 find(predicate,thisArg)
  • predicate: callback 함수
  • predicate는 배열의 각요소마다 한번씩 호출이 되며 해당값이 true 일때 해당 배열 값을 반환, 아니면 undefined 반환
  • element: 콜백함수에 전달되는 각각의 요소
  • index:콜백함수에 전달되는 각각의 요소 index
  • obj: find 함수에 전달된 object
  • thisArg: [선택]
  • find 는 callback함수가 true 가 될 경우 바로 해당값을 반환
const result =  students.find(function(student,index) {
    console.log(student);
    console.log(index);
    //결과값
    // { name: 'A', age: 29, enrolled: true, score: 45 }
    // 0
    // { name: 'B', age: 28, enrolled: false, score: 80 }
    // 1
    // { name: 'C', age: 30, enrolled: true, score: 90 }
    // 2
    // { name: 'D', age: 40, enrolled: false, score: 66 }
    // 3
    // { name: 'E', age: 18, enrolled: true, score: 88 }
    // 4
    return student.score === 90;
});

console.log(result);
//결과값: { name: 'C', age: 30, enrolled: true, score: 90 }

Q6. make an array of enrolled students 등록된 학생들만 불러와 배열화

키워드: filter()

  • 구문 filter(callbackfn,thisArg)
  • callbackfn: callback 함수
  • callbackfn 배열의 각요소마다 한번씩 호출이 되며 해당값이 true 인것들을 모아서 반환
  • element: 콜백함수에 전달되는 각각의 요소
  • index:콜백함수에 전달되는 각각의 요소 index
  • obj: find 함수에 전달된 obj
  • thisArg: [선택]
  • filter 는 callback함수가 true 가 되는 요소들만 반환
const result = students.filter(function (student, index, obj) {
    console.log(obj);
    // 결과값 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환

    // [
    //   { name: 'A', age: 29, enrolled: true, score: 45 },
    //   { name: 'B', age: 28, enrolled: false, score: 80 },
    //   { name: 'C', age: 30, enrolled: true, score: 90 },
    //   { name: 'D', age: 40, enrolled: false, score: 66 },
    //   { name: 'E', age: 18, enrolled: true, score: 88 }
    // ]
    return student.enrolled === true;
});

console.log(result);
//결과값
// [
// { name: 'A', age: 29, enrolled: true, score: 45 },
// { name: 'C', age: 30, enrolled: true, score: 90 },
// { name: 'E', age: 18, enrolled: true, score: 88 }
// ]

Q7. make an array containing only the students' scores 학생의 점수만 가져와 배열화 ( result should be: [45, 80, 90, 66, 88])

키워드: map()

  • 구문 map(callbackfn,thisArg)
  • callbackfn: callback 함수
  • 배열의 각요소마다 한번씩 callback함수를 호출하여 만들어진 결과값을 모아 새로운 배열로 반환
const result = students.map(function (student) {
    return student.score;
});

console.log(result); //결과값: [ 45, 80, 90, 66, 88 ]

Q8. check if there is a student with the score lower than 50 학생들중 50점이하의 학생이있는지 없는지를 체크

키워드: some()

  • 구문 some(callbackfn,thisArg)
  • callbackfn: callback 함수
  • 배열의 각요소마다 한번씩 callback함수를 호출하여 조건에 해당하는 값이 있는지 없는지 확인하여 하나라도 조건에 만족하면 true 아니면 false를 반환

키워드: every()

  • 구문 every(callbackfn,thisArg)
  • callbackfn: callback 함수
  • 배열의 각요소마다 한번씩 callback함수를 호출하여 조건에 해당하는 값이 있는지 없는지 확인하여 모든값이 조건에 만족하면 true 아니면 false를 반환
  • let result = students.some(function(student) {
      return student.score < 50;
    });
    

console.log(result); //결과값: true

result = !students.every(function(student) {
return student.score >= 50;
});

console.log(result); //결과값: true


## Q9. compute students' average score 학생들 점수의 평균값

### 키워드: reduce()
- 구문 reduce(callback(accumulator, currentValue, currentIndex, array), initialValue);
- callbackfn: callback 함수
- accumulator:누적값
- currentValue:현재 요소의 값
- currentIndex:[선택값] 현재요소의 index 값
- array:[선택값]
- initialValue: 초기값
- 배열의 각요소마다 한번씩 callback함수를 호출될때 마다 결과값을  accumulator 인자값으로 전달된다.

```javascript
const result = students.reduce(function (acc, cur, idx, array) {
    console.log(acc);
    console.log(cur);

    //결과값
    // 0
    // { name: 'A', age: 29, enrolled: true, score: 45 }
    // 45
    // { name: 'B', age: 28, enrolled: false, score: 80 }
    // 125
    // { name: 'C', age: 30, enrolled: true, score: 90 }
    // 215
    // { name: 'D', age: 40, enrolled: false, score: 66 }
    // 281
    // { name: 'E', age: 18, enrolled: true, score: 88 }
    return acc + cur.score;
}, 0);

console.log(result / students.length); //결과값: 73.8

Q10. make a string containing all the scores 모든 학생의 점수를 문자형으로 변경 (result should be: '45, 80, 90, 66, 88')

const result = students.map(function(student) {
    return student.score;
}).join();

console.log(result); // 결과값 45,80,90,66,88

Bonus! do Q10 sorted in ascending order //점수 결과값을 정렬 (result should be: '45, 66, 80, 88, 90')

키워드: sort()

  • 구문 score(callback(a, b);
  • callbackfn: callback 함수
  • a:이전값
  • b:현재값
  • 요소의 순서를 결정하는 데 사용되는 기능
  • 첫 번째 인수가 두 번째 인수보다 작 으면 음수 값을 반환하고,
  • 같으면 0을 반환하고 그렇지 않으면 양수 값을 반환
  • 생략하면 요소가 ASCII 문자 순서로 오름차순으로 정렬.
let result = students.map(function(student) {
    return student.score;
}).sort(function(a, b){
    return a - b;
}).join();

console.log(result); // 결과값 45,66,80,88,90 오름차순

result = students.map(function(student) {
    return student.score;
}).sort(function(a, b){
    return b - a;
}).join();

console.log(result); //결과값 90,88,80,66,45 내림차순

'javascript' 카테고리의 다른 글

20. Momentum 만들기 8 - 배경이미지 랜덤출력  (0) 2020.06.30
19. Momentum 만들기 7 - todolist 만들기3  (0) 2020.06.30
17. Momentum 만들기 6 - todolist 만들기2  (0) 2020.06.29
16. JSON  (0) 2020.06.29
15. Array 심화학습  (0) 2020.06.29