【问题标题】:ANgular js : Filter unique values and new jsonAngular js:过滤唯一值和新的json
【发布时间】:2015-07-19 12:35:58
【问题描述】:

我在 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 是 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;
    }           
});

【问题讨论】:

  • 请展示您为完成此映射所做的尝试。到目前为止,您所拥有的只是一些数据和请求某人为您完成工作的请求。您还没有尝试自己解决这个问题
  • 这个工具帮助了我一次,当我必须映射一些东西时......使用underscorejs.org
  • @charlietfl 我已经添加了我的代码,但它是错误的,不知道它的正确逻辑

标签: javascript json angularjs foreach


【解决方案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;

});

临时对象会产生:

{
    "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

【讨论】:

  • 哇,太棒了。多谢 。但是我在这一行上为(key in tmp){ 得到了一个错误分配给未声明的变量键
  • 让它for (var key in tmp)...我很懒,没有在小提琴中使用“use strict”
  • @charlietfl 是的,谢谢它的工作。你拯救了我的一天:)
猜你喜欢
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-26
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
相关资源
最近更新 更多