Вы можете использовать комбинацию reduce
для суммирования массива и sort
для упорядочения вывода:
var input = [
{
"Grid": {
"Day": [
11,
12
]
},
"Name": "One"
},
{
"Grid": {
"Day": [
5,
2
]
},
"Name": "Two"
}
];
var result = input.sort( (a,b) => sumOfDay(a) - sumOfDay(b));
console.log(result);
function sumOfDay(obj){
return obj.Grid.Day.reduce( (acc,curr) => acc + curr, 0);
}
Обратите внимание, что Array.prototype.sort
фактически изменяет исходный массив на месте.таким образом, вышеприведенное также может сделать
input.sort( (a,b) => sumOfDay(a) - sumOfDay(b));
console.log(input);
Итак, не попадайтесь в ловушку, думая, что исходный массив не изменился только потому, что я присвоил результат result
! *
ЕслиВы хотите отсортировать копию массива, сделайте это:
var result = input.slice().sort( (a,b) => sumOfDay(a) - sumOfDay(b));