У меня есть список в json, и мне нужно его с уникальными значениями
[
{
"equipmentType": "5 MEG DOCSIS",
"status": "On Truck ",
"count": 2
},
{
"equipmentType": "5 MEG DOCSIS",
"status": "Return Faulty",
"count": 3
} ]
Мне нужно, чтобы это с уникальным оборудованием. Тип:
[
{
"equipmentType": "5 MEG DOCSIS",
"On_TruckCount": 2,
"Return_Faulty": 3
}
]
Помогите мне найти решение этой проблемы. Спасибо заранее.
РЕДАКТИРОВАТЬ
Я пытаюсь с этим, но это неправильно, здесь obj is json obj.
$scope.equipmentDashboard = obj;
$scope.oldEquip="";
$scope.listtest='';
$scope.test = [];
angular.forEach(obj, function(value, key) {
if(value.equipmentType == $scope.oldEquip.equipmentType){
if(value.status=="On Truck ")
$scope.listtest.onTruck = value.count;
else
$scope.listtest.returnFaulty = value.count;
} else {
$scope.test.push($scope.listtest);
$scope.oldEquip = value;
}
});
Для чего-то вроде этого я бы использовал собственный javascript для создания временного объекта с использованием значений equipmentType
качестве ключей свойств, поскольку это то, что является общим для объектов в массиве.
Поскольку это вся предварительная обработка, нам не нужно беспокоиться об угловой области до конца. В идеале вы бы сделали это сопоставление в службе и позвольте сервису возвращать результаты
var tmp = {}
data.forEach(function (row) {
if (!tmp[row.equipmentType]) {
tmp[row.equipmentType] = {
equpmentType: row.equipmentType
};
}
if (!tmp[row.equipmentType][row.status] ) {
tmp[row.equipmentType][row.status] = 0;
}
tmp[row.equipmentType][row.status] += row.count;
});
Объект Temp будет производить:
{
"5 MEG DOCSIS": {
"equpmentType": "5 MEG DOCSIS",
"On Truck ": 2,
"Return Faulty": 3
}
}
Затем перетащите объект temp, чтобы направить каждый дочерний объект в массив, который будет использоваться в $ scope
var out = [];
for (var key in tmp) {
if (tmp.hasOwnProperty(key)) {
out.push(tmp[key]);
}
}
$scope.equipmentList = out;
for (var key in tmp)
... Я был ленивым и не использовал "использовать строгий" в скрипке