ramdaを使用してオブジェクトの配列を変換するのに役立つ必要があります。私がしたい場合はramdaグループをプロパティで使用し、指定されたプロパティの結果を合計します
var arr = [
{
title: "scotty",
age: 22,
score: 54,
hobby: "debugging"
}, {
title: "scotty",
age: 22,
score: 19,
hobby: "debugging"
}
, {
title: "gabriel",
age: 40,
score: 1000
}
];
:私は指定されたプロパティ
- グループにするために、このような配列を指定して
を設定し、得られ 上の別のプロパティを希望しますグループによってtitle
と合計でage
それは値の次の要約を返す必要があります
var arr = [
{
title: "scotty",
age: 44,
hobby: "debugging",
}
, {
title: "gabriel",
age: 40,
score: 1000
}
];
不特定のプロパティの値が異なる場合は省略する必要がありますが、指定されていないプロパティの値が同じ場合は最終結果に残す必要があります。
**マイソリューション**
/*
* [Student]
*/
var arr = [
{
title: "scotty",
age: 22,
score: 54,
hobby: "debugging"
}, {
title: "scotty",
age: 22,
score: 19,
hobby: "debugging"
}
, {
title: "gabriel",
age: 40,
score: 1000
}
];
/*
* String -> [[Student]] -> [Student]
*/
var sumOnProperty = function(property, v){
var sum = (x,y) => x[property] + y[property];
var new_array = [];
v.forEach(arr => {
if(arr.length > 1){
arr[0]["age"] = arr.reduce(sum)
new_array.push(arr[0]);
} else {
if(arr.length != 0){
new_array.push(arr[0]);
}
}
})
return new_array;
}
/*
* String -> String -> [Student] -> [Student]
*/
var groupsumBy = function(groupproperty, sumproperty, arr){
// create grouping
var grouping = R.groupBy(R.prop(groupproperty), arr)
// convert grouping object to array
var result1 = R.valuesIn(grouping);
// sum each grouping and flatten 2d array
var result2 = sumOnProperty(sumproperty, result1);
return result2;
}
groupsumBy("title","age",arr);
指定されたプロパティのプロパティとの和の結果によってRAMDAグループを使用して
解決策を私の質問に入れましたが、あなたがそれを達成した方法を見ていただければ幸いです –