filter, map, sort, reduce 예제

용상윤·2021년 5월 11일
1

JavaScript30

목록 보기
4/4

자바스크립트 30 4번째 과제 중...


<배열>

const inventors = [
        { first: "Albert", last: "Einstein", year: 1879, passed: 1955 },
        { first: "Isaac", last: "Newton", year: 1643, passed: 1727 },
        { first: "Galileo", last: "Galilei", year: 1564, passed: 1642 },
        { first: "Marie", last: "Curie", year: 1867, passed: 1934 },
        { first: "Johannes", last: "Kepler", year: 1571, passed: 1630 },
        { first: "Nicolaus", last: "Copernicus", year: 1473, passed: 1543 },
        { first: "Max", last: "Planck", year: 1858, passed: 1947 },
        { first: "Katherine", last: "Blodgett", year: 1898, passed: 1979 },
        { first: "Ada", last: "Lovelace", year: 1815, passed: 1852 },
        { first: "Sarah E.", last: "Goode", year: 1855, passed: 1905 },
        { first: "Lise", last: "Meitner", year: 1878, passed: 1968 },
        { first: "Hanna", last: "Hammarström", year: 1829, passed: 1909 },
      ];

      const people = [
        "Bernhard, Sandra",
        "Bethea, Erin",
        "Becker, Carl",
        "Bentsen, Lloyd",
        "Beckett, Samuel",
        "Blake, William",
        "Berger, Ric",
        "Beddoes, Mick",
        "Beethoven, Ludwig",
        "Belloc, Hilaire",
        "Begin, Menachem",
        "Bellow, Saul",
        "Benchley, Robert",
        "Blair, Robert",
        "Benenson, Peter",
        "Benjamin, Walter",
        "Berlin, Irving",
        "Benn, Tony",
        "Benson, Leana",
        "Bent, Silas",
        "Berle, Milton",
        "Berry, Halle",
        "Biko, Steve",
        "Beck, Glenn",
        "Bergman, Ingmar",
        "Black, Elk",
        "Berio, Luciano",
        "Berne, Eric",
        "Berra, Yogi",
        "Berry, Wendell",
        "Bevan, Aneurin",
        "Ben-Gurion, David",
        "Bevel, Ken",
        "Biden, Joseph",
        "Bennington, Chester",
        "Bierce, Ambrose",
        "Billings, Josh",
        "Birrell, Augustine",
        "Blair, Tony",
        "Beecher, Henry",
        "Biondo, Frank",
      ];

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

예제

1. inventors 에서 1500년대 출생자의 리스트만 구해라. (filter)

const fifteen = inventors.filter((inventor) => {
  if (inventor.year >= 1500 && inventor.year < 1600) {
    return true;
  } else {
    return false;
  }
});

// 또는
const fifteen = inventors.filter((inventor) => inventor.year >= 1500 && inventor.year < 1600);


2. inventors 에서 이름과 성만 구해라 (map)

const inventorsName = inventors.map((inventor) => {
  const name = `${inventor.first} ${inventor.last}`;
  return name;
});

3. inventors 에서 출생 순으로 정렬해라 (sort)


const sortedInventorsBybirth = inventors.sort((a, b) => {
  return a.year > b.year ? 1 : -1;
});

// 또는
const sortedInventorsBybirth = inventors.sort((a, b) => a.year - b.year);

4. 모든 inventors 의 나이 합은? (reduce)

const sum = inventors.reduce((acc, cur) => {
  return acc + cur.passed - cur.year;
}, 0);

5. inventors 의 나이가 많은사람 > 적은사람 순으로 정렬 (sort)


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

6. people 의 '성' 을 기준으로 정렬 (a-z 순)

const alpha = people.sort((lastOne, nextOne) => {
  // split() 은 배열을 반환함, 구조분해할당
  const [aLast, aFirst] = lastOne.split(", ");
  const [bLast, bFirst] = nextOne.split(", ");
  return aLast > bLast ? 1 : -1;
  // return aLast - bLast 는 X
});

//또는
const alpha = people.sort();

7. data 에서 각 인스턴스 수를 셀 것

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

// {car: 5, truck: 3, bike: 2, walk: 2, van: 2}
profile
달리는 중!

0개의 댓글