두 개의 속성 후에 객체 배열을 그룹화하려면 어떻게해야합니까? 다음과 같은 경우 Reduce를 사용할 수 있습니까?
예 : 국가 및 도시별로 다음 배열을 그룹화하고 "age"속성을 합산합니다.
array = [
{
age: 20,
country: "England"
city: "London",
zip: "1234"
},
{
age: 25,
country: "England"
city: "London",
zip: "12345"
},
{
age: 40,
country: "England"
city: "Manchester",
zip: "123456"
}
]
/* 예상 결과: */
expectedArray = [
{
age: 45, /* 20 + 25 */
country: "England"
city: "London",
zip: "Not relevant"
},
{
age: 40,
country: "England"
city: "Manchester",
zip: "NR"
]
다음을 사용하여 그렇게 할 수 있습니다 findIndex
. 이 배열 방법을 사용하여 도시 및 국가가 일치하는 누산기 배열에서 객체의 색인을 찾습니다. 그렇지 않으면 그러한 객체가 없으면 -1을 반환합니다. 그 경우 -1
다음의 누적 어레이 메인 어레이로부터 객체 푸시reduce
let array = [{
age: 20,
country: "England",
city: "London",
zip: "1234"
},
{
age: 25,
country: "England",
city: "London",
zip: "12345"
},
{
age: 40,
country: "England",
city: "Manchester",
zip: "123456"
}
]
let newArray = array.reduce((acc, curr) => {
let getIndex = acc.findIndex((item) => {
return item.country === curr.country && item.city === curr.city
});
if (getIndex === -1) {
acc.push(curr)
} else {
acc[getIndex].age += curr.age
}
return acc;
}, []);
console.log(newArray)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다