{id:1, val:'author', hits:1},
{id:1, val:'author', hits:2},
{id:1, val:'reviewer', hits:1},
{id:2, val:'author', hits:100},
{id: 1, val:'author', hits:5}
기타
따라서이 데이터를 집계하는 무언가를 원합니다 (Javascript, Jquery 또는 단일 루프가있는 Angular 필터 일 수 있음)
{id: 1, author:3, reviewer:1, hits:9 }
{id: 2, author:1, reviewer:0, hits:100}
지금은 이것에 대해 머리를 부수고 있습니다 !!
한 가지 가능한 접근 방식 :
var source = [
{id:1, val:'author', hits:1},
{id:1, val:'author', hits:2},
{id:1, val:'reviewer', hits:1},
{id:2, val:'author', hits:100},
{id: 1, val:'author', hits:5}
];
var grouped = source.reduce(function(dict, el, i, arr) {
var obj = dict[el.id];
if (!obj) {
obj = {
id: el.id,
author: 0,
reviewer: 0,
hits: 0
};
dict.__arr.push(obj);
dict[el.id] = obj;
}
obj[el.val]++;
obj.hits += el.hits;
return i === arr.length - 1? dict.__arr : dict;
}, {__arr:[]});
데모 . 몇 가지 기준에 따라 항목을 그룹화해야하는 경우 자주Array.reduce
사전 개체와 함께사용하여 그룹화 프로세스를 구성합니다. 이 경우 단일 루프에서 결과 배열을 가져와야하기 때문에 조금 더 복잡합니다. 사전 객체는 사전이 구성되는 동안 채워지는 특정 속성 ( '__arr')과 함께 제공됩니다. 결국i === arr.length - 1
이 배열은 .reduce의 결과로 제공됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다