ANgular js: фильтр уникальных значений и новых json

0

У меня есть список в 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;
    }           
});
  • 0
    Пожалуйста, покажите, что вы пытались выполнить это отображение. Пока у вас есть только некоторые данные и просьба, чтобы кто-то сделал вашу работу за вас. Вы не показали ни одной попытки решить это самостоятельно
  • 0
    Этот инструмент помог мне однажды, когда мне нужно что-то отобразить ... используйте underscorejs.org
Показать ещё 1 комментарий
Теги:
foreach

1 ответ

1
Лучший ответ

Для чего-то вроде этого я бы использовал собственный 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;

DEMO

  • 0
    Вао, это круто. большое спасибо . но я получаю сообщение об ошибке для необъявленного ключа переменной в этой строке для (введите tmp) {
  • 0
    сделать это for (var key in tmp) ... Я был ленивым и не использовал "использовать строгий" в скрипке
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню