>source

다음 형식의 날짜로 키가있는 개체가 있습니다. "yyyy-mm-dd" (예 : 2020-08-14) 각 키의 값은 이름과 값이라는 두 가지 속성을 가진 객체의 배열입니다.

키의 합계를 구하는 방법을 찾아야합니다. value 그룹화 name Accros N 일.

다음은 더 잘 이해할 수있는 예입니다. 원래 객체에는 4 일의 데이터가 있고 하루에는 빈 배열이 있습니다.

{
  "2020-10-15":[
    {"name":"France","value":20},
    {"name":"United States","value":20},
    {"name":"Italy","value":5},
   ],
 "2020-10-16":[
    {"name":"Germany","value":10},
    {"name":"United States","value":5},
    {"name":"France","value":10}
   ],
  "2020-10-17":[],
   "2020-10-18":[
    {"name":"UK","value":10},
    {"name":"Italy","value":10},
   ]
 }

예를 들어이 데이터를 4 일 단위로 그룹화하려면 다음을 얻습니다.

[{"name": "France", "value": 30},
 {"name": "United States", "value": 25},
 {"name": "Italy", "value": 15},
 {"name": "Germany", "value": 10},
 {"name": "UK", "value": 10}]

4 일 동안 이름에 대해 동일한 값을 가진 모든 개체의 합계입니다. 나는 이것을 달성하는 방법을 전혀 모른다. 맵을 사용하여 객체 키를 반복하고 순간 js를 통해 일부 처리를 수행 할 수 있지만 이것을 달성하는 방법을 모르겠습니다.

  • 답변 # 1

    reduce, forEach 및 Object.keys 메소드를 사용하여 다음을 수행 할 수 있습니다.

    const value = {
      "2020-10-15":[
        {"name":"France","value":20},
        {"name":"United States","value":20},
        {"name":"Italy","value":5},
       ],
     "2020-10-16":[
        {"name":"Germany","value":10},
        {"name":"United States","value":5},
        {"name":"France","value":10}
       ],
      "2020-10-17":[],
       "2020-10-18":[
        {"name":"UK","value":10},
        {"name":"Italy","value":10},
       ]
     }
    let res = Object.keys(value).reduce((prev, curr) => {
       value[curr].forEach(item => {
          const idx = prev.findIndex(pItem => pItem.name === item.name);
          if(idx > -1) {
             const newObj = {...prev[idx], value: prev[idx].value + item.value};
             prev[idx] = newObj;
             return ;
          }
          prev.push(item);
       })
       return prev;
    }, []);
    console.log(res);
    
    

관련 자료

  • 이전 r - 거꾸로 된 종 곡선에서 샘플링하는 방법
  • 다음 docker - NGINX가 gunicorn 웹 애플리케이션과 함께 작동하도록하기