Я пытаюсь динамически изменить значение свойства, по которому должен быть сгруппирован объект JSON. например, если мой критерий поиска - это местоположение, я хочу отобразить рабочее место сотрудника в качестве ключа, а не сотрудников в этом месте в виде пары, тогда как местоположение является одним из свойств в JSON.
Это то, что я сделалдо сих пор. Я могу группировать сотрудников на основе местоположения и его количества в качестве пары ключ-значение.
var rows = [
{
"empId": 1,
"empName": "aaa",
"skillSet": "JAVA",
"location": "chennai"
},
{
"empId": 2,
"empName": "bbb",
"skillSet": "Angular",
"location": "chennai"
},
{
"empId": 3,
"empName": "ccc",
"skillSet": "Angular",
"location": "chennai"
},
{
"empId": 4,
"empName": "ddd",
"skillSet": "JAVA",
"location": "bangalore"
},
{
"empId": 5,
"empName": "eee",
"skillSet": "JAVA",
"location": "chennai"
},
{
"empId": 6,
"empName": "fff",
"skillSet": "JAVA",
"location": "bangalore"
},
{
"empId": 7,
"empName": "ggg",
"skillSet": "oracle",
"location": "chennai"
},
{
"empId": 8,
"empName": "hhh",
"skillSet": "JAVA",
"location": "hyderabad"
},
{
"empId": 9,
"empName": "iii",
"skillSet": "JAVA",
"location": "hyderabad"
}
]
var occurences = rows.reduce(function (r, row) {
r[row.location] = ++r[row.location] || 1;
return r;
}, {});
var result = Object.keys(occurences).map(function (key) {
return { key: key, value: occurences[key] };
});
console.log(result);
и мой результат
[{
"key": "chennai",
"value": 5
},
{
"key": "bangalore",
"value": 2
},
{
"key": "hyderabad",
"value": 2
}
]
Как вы можете видеть, я жестко закодировал местоположение напрямую
r[row.location] = ++r[row.location] || 1;
Вместо этого, который я хочу сделать динамическим, я могу также иметь возможность группировать его, используя другие атрибуты, такие как skillSet. Но как это сделать.