JavaScript - Lazy Evaluation(2)

Code_Alpacat·2022년 6월 9일
0

JavaScript - 중급

목록 보기
7/11

*지연성 평가의 실무 예제

  • 아래와 같이 users는 Json 형태의 객체로 선언이 되어있다.
  • users 데이터를 가공하는 과정에서 go 혹은 pipe 함수를 통해 결과를 가독성이 좋고 효율적으로 lazy하게 평가할 수 있다.
  • take를 통해 4개의 객체만 가져오므로, 전체 users의 크기가 무한히 커져도 4회만 순회하므로 효율이 매우 좋다고 볼 수 있다.
var users = [
    {
      name: 'a', age: 21, family: [
        {name: 'a1', age: 53}, {name: 'a2', age: 47},
        {name: 'a3', age: 16}, {name: 'a4', age: 15}
      ]
    },
    {
      name: 'b', age: 24, family: [
        {name: 'b1', age: 58}, {name: 'b2', age: 51},
        {name: 'b3', age: 19}, {name: 'b4', age: 22}
      ]
    },
    {
      name: 'c', age: 31, family: [
        {name: 'c1', age: 64}, {name: 'c2', age: 62}
      ]
    },
    {
      name: 'd', age: 20, family: [
        {name: 'd1', age: 42}, {name: 'd2', age: 42},
        {name: 'd3', age: 11}, {name: 'd4', age: 7}
      ]
    }
  ];

  go(users,
    L.flatMap(u => u.family),
    L.filter(u => u.age > 20),
    L.map(u => u.age),
    take(4),
    reduce(add),
    console.log);
profile
In the future, I'm never gonna regret, cuz I've been trying my best for every single moment.

0개의 댓글