Array Cardio

hongcoder·2020년 5월 21일
0

Front-end

목록 보기
2/12

오늘 할 챌린지는 자바스크립트를 통해서 Array들을 원하는 형식으로 배열하는 연습이다.

first/ last/ year/ passed
이렇게 4가지로 발명가들이 const inventors =[{...}]로 나열되어 있다.

첫번째, 1500's에 태어난 사람들을 리스트로 필터링해라.

const fifteen = inventors.filter(inventor=>{
inventor.year>=1500 && inventor.year <1600});
console.log(fifteen);

Array.prototype.filter() 메소드는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 Array로 반환한다.

주어진 배열에서 원하는 값을 걸러낼 때 사용한다.

const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];

const result = words.filter(word => word.length > 6);

console.log(result);
// expected output: Array ["exuberant", "destruction", "present"]

참고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

두번째, inventors 배열에서 성과 이름을 뽑아내라.

const fullNames = inventors.map(inventor => `${inventor.first} ${inventor.last}`);
console.table(fullNames);

Array.prototype.map()은 배열 내의 모든 요소 '각각'에 대해 주언진 함수를 호출한 결과를 모아 새로운 배열로 반환한다.

var numbers = [1, 4, 9];
var doubles = numbers.map(function(num) {
  return num * 2;
});
// doubles는 이제 [2, 8, 18]
// numbers는 그대로 [1, 4, 9]

참고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/map

세번째, 나이가 많은순으로 inventors를 분류하라.

const ordered = inventors.sort((a,b)=> a.year>b.year ? 1 : -1);
console.table(ordered)

다른 방식으로는

const ordered = inventors.sort(function(a,b) {
if(a.year > b.year) {
return 1;
}else {
 return -1;
 }
});

Array.prototype.sort() 메소드는 배열의 요소를
적절한 위치에 정렬한 후 그 배열을 반환한다.

const number = [4, 11, 2, 10, 3, 1]; 

/* 오류 */
number.sort(); // 1, 10, 11, 2, 3, 4 
              // ASCII 문자 순서로 정렬되어 숫자의 크기대로 나오지 않음

/* 정상 동작 */
number.sort(function(a, b) { // 오름차순
    return a - b;
    // 1, 2, 3, 4, 10, 11
});

number.sort(function(a, b) { // 내림차순
    return b - a;
    // 11, 10, 4, 3, 2, 1
});

참고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

네번째, inventors의 산 모든 기간을 합해라.

const totalYears = inventors.reduce((total, inventor) => {
return total + (inventor.passed - inventor.year);
}, 0);

console.log(totalYears);

Array.prototype.reduce() 메소드는 배열의 각 요소에 대한 주어진 reducer함수를 실행하고, 하나의 결과값을 반환한다.

   const number = ['1', '2', '4', '1', '2', '3', '2', '1', '4'];

    const reducer = function (accumulator, value, index, array) {
      if (accumulator.hasOwnProperty(value)) {
        accumulator[value] = accumulator[value] + 1;
      } else {
        accumulator[value] = 1;
      }
      return accumulator;
    }

    const initialValue = {};
    const result = number.reduce(reducer, initialValue);
    console.log(result); //   {1: 3, 2: 3, 3: 1, 4: 2}

참고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

다섯번째, inventors를 장수한 순서로 분류하라.

const oldest = inventors.sort(function(a,b){
	const lastGuy = a.passed - a.year;
	const nextGuy = b.passed - b.year; 
    return lastGuy > nextGuy ? -1 : 1;
})

console.table(oldest);

여섯번째, 성씨로 알파벳 순서대로 이름을 분류하라.

const alpha = people.sort((lastOne,nextOne) =>{
	const [aLast, aFirst] = lastOne.split(', ');
	const [bLast, bFirst] = nextOne.split(', ');
		return aLast > bLast ?1 :-1;
});

console.log(alpha);

일곱번째, 각 데이터를 합해라.

const data = ['car', 'car', 'truck', 'truck', 'bike', 'walk', 'car', 'van', 'bike', 'walk', 'car', 'van', ![]'truck'];

    const transportation = data.reduce(function (obj, item) {
      if (!obj[item]) {
        obj[item] = 0;
      }
      obj[item]++;
      return obj;
    }, {})

    console.log(transportation);

자바스크립트의 Array에 대한 다양한 메소드들이 있는데 현실적으로 전부 외우는 것은 효율적이지 않기에 최대한 많이 익숙해지는 것을 우선으로 하며 구글링을 잘하는 능력도 기술이기에 메소드의 본질을 잘 파악해야겠다.

profile
기록하지 않으면 기억되지않음🧐

0개의 댓글