Помогите объединить объекты.
Добрый день.
Что-то я никак не соображу как сделать Есть массив объектов:
let arr = [
{
"ASSIGNEE": "Иванова Татьяна",
"SUBCATEGORY": "Обратная связь",
"AVERAGE_TTL": 279
},
{
"ASSIGNEE": "Иванова Татьяна",
"SUBCATEGORY": "Обратная связь от КК",
"AVERAGE_TTL": 4
},
{
"ASSIGNEE": "Петрова Валентина",
"SUBCATEGORY": "Обратная связь",
"AVERAGE_TTL": 4
},
{
"ASSIGNEE": "Петрова Валентина",
"SUBCATEGORY": "Обратная связь от КК",
"AVERAGE_TTL": 114
},
]
Мне необходимо из них получить массив такого вида:
let arr2 = [
{
"ASSIGNEE": "Иванова Татьяна",
"Обратная связь": 279,
"Обратная связь от КК": 4
},
{
"ASSIGNEE": "Петрова Валентина",
"Обратная связь": 4,
"Обратная связь от КК": 114
}
]
Т.е по имени человека объединить и вывести поля SUBCATEGORY и AVERAGE_TTL в связке друг с другом |
AlexandrDr,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>
<div id="app">
<ul>
<li v-for="el of array_out">
{{el}}
</li>
</ul>
</div>
<script>
const webstore = new Vue({
el: '#app',
data() {
return {
array_in: [{
"ASSIGNEE": "Иванова Татьяна",
"SUBCATEGORY": "Обратная связь",
"AVERAGE_TTL": 279
},
{
"ASSIGNEE": "Иванова Татьяна",
"SUBCATEGORY": "Обратная связь от КК",
"AVERAGE_TTL": 4
},
{
"ASSIGNEE": "Петрова Валентина",
"SUBCATEGORY": "Обратная связь",
"AVERAGE_TTL": 4
},
{
"ASSIGNEE": "Петрова Валентина",
"SUBCATEGORY": "Обратная связь от КК",
"AVERAGE_TTL": 114
},
],
array_out: []
}
},
created() {
this.array_out = this.getArray(this.array_in);
},
methods: {
getArray(arr) {
let obj_name = {};
let arr_calculated = [];
arr.forEach(({
ASSIGNEE,
SUBCATEGORY,
AVERAGE_TTL
}) => {
if (obj_name[ASSIGNEE]) {
obj_name[ASSIGNEE][SUBCATEGORY] = AVERAGE_TTL
} else {
obj_name[ASSIGNEE] = {
ASSIGNEE,
[SUBCATEGORY]: AVERAGE_TTL
}
arr_calculated.push(obj_name[ASSIGNEE])
}
})
return arr_calculated;
}
},
});
</script>
</body>
</html>
|
Без всякого вуя
let arr = [
{
"ASSIGNEE": "Иванова Татьяна",
"SUBCATEGORY": "Обратная связь",
"AVERAGE_TTL": 279
},
{
"ASSIGNEE": "Иванова Татьяна",
"SUBCATEGORY": "Обратная связь от КК",
"AVERAGE_TTL": 4
},
{
"ASSIGNEE": "Петрова Валентина",
"SUBCATEGORY": "Обратная связь",
"AVERAGE_TTL": 4
},
{
"ASSIGNEE": "Петрова Валентина",
"SUBCATEGORY": "Обратная связь от КК",
"AVERAGE_TTL": 114
},
]
const m = new Map()
arr.forEach(o => {
const ass = o.ASSIGNEE;
if (!m.has(ass) ) m.set (ass, {"ASSIGNEE": ass})
const mo = m.get(ass)
mo[o.SUBCATEGORY] = o.AVERAGE_TTL
})
let arr2 = [...m.values()]
console.log (arr2)
|
| Часовой пояс GMT +3, время: 08:59. |