ANgular js:过滤唯一值和新的json

ANgular js : Filter unique values and new json

本文关键字:json 唯一 js 过滤 ANgular      更新时间:2023-09-26

我有一个json列表,我需要它的唯一值

[
    {
        "equipmentType": "5 MEG DOCSIS",
        "status": "On Truck ",
        "count": 2
    },
    {
        "equipmentType": "5 MEG DOCSIS",
        "status": "Return Faulty",
        "count": 3
    } ]

我需要这样的独特设备type:

[
        {
            "equipmentType": "5 MEG DOCSIS",
            "On_TruckCount": 2,
            "Return_Faulty": 3
        }
]
帮我找出那个问题的解决方法提前感谢……

编辑

我正在尝试,但它是错误的,这里的obj是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;
演示