Javascript 使用随机键AngularJS显示JSON

Javascript 使用随机键AngularJS显示JSON,javascript,angularjs,arrays,json,angularjs-ng-repeat,Javascript,Angularjs,Arrays,Json,Angularjs Ng Repeat,我有一个JSON对象。我需要用ng repeat显示此数据。问题是数组的基键正在更改。我需要我来解决这个问题。此JSON将被嵌套并重复 var JSON = { "DK-App": [{ "_id": 1056, "thread_id": 328, "address": "DK-App", "date": 1507470152962, "date_sent":

我有一个JSON对象。我需要用ng repeat显示此数据。问题是数组的基键正在更改。我需要我来解决这个问题。此JSON将被嵌套并重复

var JSON = {
        "DK-App": [{
            "_id": 1056,
            "thread_id": 328,
            "address": "DK-App",
            "date": 1507470152962,
            "date_sent": 1507470093000,
            "protocol": 0,
            "read": 0,
            "status": -1,
            "type": 1,
            "reply_path_present": 0,
            "locked": 0,
            "sub_id": 2,
            "phone_id": 1,
            "error_code": 0,
            "creator": "com.android.mms",
            "seen": 0,
            "priority": -1,
            "oppo_drafts": 1,
            "sim_id": -1,
            "oppo_mass": 0,
            "oppo_timer": 0,
            "oppo_groupaddress": "DK-App",
            "oppo_collected": 0,
            "oppo_sub_date": 1507470093000,
            "oppo_service_message_sms_type": 0,
            "deleted": 0,
            "sync_state": 0,
            "oppo_sms_type": 0,
            "$$hashKey": "object:4"
        }, {
            "_id": 1028,
            "thread_id": 328,
            "address": "DK-App",
            "date": 1507360655265,
            "date_sent": 1507360594000,
            "protocol": 0,
            "read": 0,
            "status": -1,
            "type": 1,
            "reply_path_present": 0,
            "locked": 0,
            "sub_id": 2,
            "phone_id": 1,
            "error_code": 0,
            "creator": "com.android.mms",
            "seen": 1,
            "priority": -1,
            "oppo_drafts": 1,
            "sim_id": -1,
            "oppo_mass": 0,
            "oppo_timer": 0,
            "oppo_groupaddress": "DK-App",
            "oppo_collected": 0,
            "oppo_sub_date": 1507360594000,
            "oppo_service_message_sms_type": 0,
            "deleted": 0,
            "sync_state": 0,
            "oppo_sms_type": 0,
            "$$hashKey": "object:27"
        }, {
            "_id": 985,
            "thread_id": 328,
            "address": "DK-App",
            "date": 1507198047122,
            "date_sent": 1507197980000,
            "protocol": 0,
            "read": 0,
            "status": -1,
            "type": 1,
            "reply_path_present": 0,
            "locked": 0,
            "sub_id": 2,
            "phone_id": 1,
            "error_code": 0,
            "creator": "com.android.mms",
            "seen": 1,
            "priority": -1,
            "oppo_drafts": 1,
            "sim_id": -1,
            "oppo_mass": 0,
            "oppo_timer": 0,
            "oppo_groupaddress": "DK-App",
            "oppo_collected": 0,
            "oppo_sub_date": 1507197980000,
            "oppo_service_message_sms_type": 0,
            "deleted": 0,
            "sync_state": 0,
            "oppo_sms_type": 0,
            "$$hashKey": "object:45"
        }, {
            "_id": 977,
            "thread_id": 328,
            "address": "DK-App",
            "date": 1507179236636,
            "date_sent": 0,
            "read": 0,
            "status": -1,
            "type": 1,
            "locked": 0,
            "sub_id": 2,
            "phone_id": 1,
            "error_code": 0,
            "creator": "com.android.mms",
            "seen": 1,
            "priority": -1,
            "oppo_drafts": 1,
            "sim_id": -1,
            "oppo_mass": 0,
            "oppo_timer": 0,
            "oppo_collected": 0,
            "oppo_service_message_sms_type": 0,
            "deleted": 0,
            "sync_state": 0,
            "oppo_sms_type": 0,
            "$$hashKey": "object:48"
        }],
        "BZ-FPANDA": [{
            "_id": 1055,
            "thread_id": 96,
            "address": "BZ-FPANDA",
            "date": 1507469661223,
            "date_sent": 1507469657000,
            "protocol": 0,
            "read": 0,
            "status": -1,
            "type": 1,
            "reply_path_present": 0,
            "locked": 0,
            "sub_id": 1,
            "phone_id": 0,
            "error_code": 0,
            "creator": "com.android.mms",
            "seen": 0,
            "priority": -1,
            "oppo_drafts": 1,
            "sim_id": -1,
            "oppo_mass": 0,
            "oppo_timer": 0,
            "oppo_groupaddress": "BZ-FPANDA",
            "oppo_collected": 0,
            "oppo_sub_date": 1507469657000,
            "oppo_service_message_sms_type": 0,
            "deleted": 0,
            "sync_state": 0,
            "oppo_sms_type": 0,
            "$$hashKey": "object:5"
        }, {
            "_id": 930,
            "thread_id": 96,
            "address": "BZ-FPANDA",
            "date": 1506925028930,
            "date_sent": 1506925025000,
            "protocol": 0,
            "read": 0,
            "status": -1,
            "type": 1,
            "reply_path_present": 0,
            "locked": 0,
            "sub_id": 1,
            "phone_id": 0,
            "error_code": 0,
            "creator": "com.android.mms",
            "seen": 1,
            "priority": -1,
            "oppo_drafts": 1,
            "sim_id": -1,
            "oppo_mass": 0,
            "oppo_timer": 0,
            "oppo_groupaddress": "BZ-FPANDA",
            "oppo_collected": 0,
            "oppo_sub_date": 1506925025000,
            "oppo_service_message_sms_type": 0,
            "deleted": 0,
            "sync_state": 0,
            "oppo_sms_type": 0,
            "$$hashKey": "object:56"
        }]
    }
这个JSON需要为每个数组创建列表。但是,数组的每个键都是不同的。ng repeat无法使用

ng-repeat="j in JSON"
在此之前,我试图通过仅基于键按下公共n来规范化这个数组列表

var result = {};
                    data.forEach(function(item) {
                      if (!result[item.address]) 
                        result[item.address] = [item];
                      else
                        result[item.address].push(item);
                    });
现在我得到了一个包含数组的带有“键”的JSON。像这样的原始JSON逻辑

我已尝试根据键
地址
推送公共对象。
我需要访问JSON变量中的“DK-App”和“BZ-FPANDA”,并需要迭代“DK-App”和“BZ-FPANDA”中的数组。请注意,这两个“DK-APP”和“BZ-FPANDA”都是从后端编程而来的,有这样一个巨大的列表。问题在于我如何使用JS获取数组,以便可以根据您的期望对其进行迭代。您可以将数据展平,或者使用嵌套的
ng repeat
,其中外部的repeat迭代主对象,内部的repeat迭代内部数组

使用嵌套重复:

<div ng-repeat="(k, arr) in JSON">
   Key is: {{k}}
   <div  ng-repeat="item in arr">
      Item address is : {{item.address}} 
  </div>
</div>

密钥是:{{k}
项目地址为:{{Item.address}
使用标准化数据

<div ng-repeat="item in $ctrl.data">
  Creator of {{ item._id }} is {{ item.creator }}
</div>
<div ng-repeat="data in $ctrl.JSON">
   <div  ng-repeat="item in data">
      Creator of {{ item._id }} is {{ item.creator }}
  </div>
</div>

{{item.\u id}}的创建者是{{item.Creator}
没有非标准化数据

<div ng-repeat="item in $ctrl.data">
  Creator of {{ item._id }} is {{ item.creator }}
</div>
<div ng-repeat="data in $ctrl.JSON">
   <div  ng-repeat="item in data">
      Creator of {{ item._id }} is {{ item.creator }}
  </div>
</div>

{{item.\u id}}的创建者是{{item.Creator}

如果问题仍然存在,请创建一个plunker示例。

由于数据嵌套在一个级别上,因此可以在模板中编写嵌套循环以提取对象中的每个项目

var JSONdata={
“DK应用程序”:[{
“_id”:1056,
“线程id”:328,
“地址”:“DK应用程序”,
“日期”:1507470152962,
“发送日期”:1507470093000,
“协议”:0,
“读取”:0,
“地位”:-1,
“类型”:1,
“回复路径存在”:0,
“已锁定”:0,
“sub_id”:2,
“电话号码”:1,
“错误代码”:0,
“创建者”:“com.android.mms”,
“看见”:0,
“优先事项”:,
“oppo_草案”:1,
“sim_id”:-1,
“oppo_mass”:0,
“oppo_计时器”:0,
“oppo_群组地址”:“DK应用程序”,
“收集的oppo_”:0,
“运营日期”:1507470093000,
“oppo_服务_消息_短信_类型”:0,
“已删除”:0,
“同步状态”:0,
“oppo_短信类型”:0,
“$$hashKey”:“对象:4”
}, {
“_id”:1028,
“线程id”:328,
“地址”:“DK应用程序”,
“日期”:1507360655265,
“发送日期”:1507360594000,
“协议”:0,
“读取”:0,
“地位”:-1,
“类型”:1,
“回复路径存在”:0,
“已锁定”:0,
“sub_id”:2,
“电话号码”:1,
“错误代码”:0,
“创建者”:“com.android.mms”,
"见":一,,
“优先事项”:,
“oppo_草案”:1,
“sim_id”:-1,
“oppo_mass”:0,
“oppo_计时器”:0,
“oppo_群组地址”:“DK应用程序”,
“收集的oppo_”:0,
“运营日期”:1507360594000,
“oppo_服务_消息_短信_类型”:0,
“已删除”:0,
“同步状态”:0,
“oppo_短信类型”:0,
$$hashKey:“对象:27”
}, {
“_id”:985,
“线程id”:328,
“地址”:“DK应用程序”,
“日期”:1507198047122,
“发送日期”:1507197980000,
“协议”:0,
“读取”:0,
“地位”:-1,
“类型”:1,
“回复路径存在”:0,
“已锁定”:0,
“sub_id”:2,
“电话号码”:1,
“错误代码”:0,
“创建者”:“com.android.mms”,
"见":一,,
“优先事项”:,
“oppo_草案”:1,
“sim_id”:-1,
“oppo_mass”:0,
“oppo_计时器”:0,
“oppo_群组地址”:“DK应用程序”,
“收集的oppo_”:0,
“运营日期”:1507197980000,
“oppo_服务_消息_短信_类型”:0,
“已删除”:0,
“同步状态”:0,
“oppo_短信类型”:0,
“$$hashKey”:“对象:45”
}, {
“_id”:977,
“线程id”:328,
“地址”:“DK应用程序”,
“日期”:1507179236636,
“发送日期”:0,
“读取”:0,
“地位”:-1,
“类型”:1,
“已锁定”:0,
“sub_id”:2,
“电话号码”:1,
“错误代码”:0,
“创建者”:“com.android.mms”,
"见":一,,
“优先事项”:,
“oppo_草案”:1,
“sim_id”:-1,
“oppo_mass”:0,
“oppo_计时器”:0,
“收集的oppo_”:0,
“oppo_服务_消息_短信_类型”:0,
“已删除”:0,
“同步状态”:0,
“oppo_短信类型”:0,
“$$hashKey”:“对象:48”
}],
“BZ-FPANDA”:[{
“_id”:1055,
“线程id”:96,
“地址”:“BZ-FPANDA”,
“日期”:1507469661223,
“发送日期”:1507469657000,
“协议”:0,
“读取”:0,
“地位”:-1,
“类型”:1,
“回复路径存在”:0,
“已锁定”:0,
“sub_id”:1,
“电话号码”:0,
“错误代码”:0,
“创建者”:“com.android.mms”,
“看见”:0,
“优先事项”:,
“oppo_草案”:1,
“sim_id”:-1,
“oppo_mass”:0,
“oppo_计时器”:0,
“oppo_集团地址”:“BZ-FPANDA”,
“收集的oppo_”:0,
“oppo_sub_日期”:1507469657000,
“oppo_服务_消息_短信_类型”:0,
“已删除”:0,
“同步状态”:0,
“oppo_短信类型”:0,
“$$hashKey”:“对象:5”
}, {
“_id”:930,
“线程id”:96,
“地址”:“BZ-FPANDA”,
“日期”:1506925028930,
“发送日期”:1506925025000,
“协议”:0,
“读取”:0,
“地位”:-1,
“类型”:1,
“回复路径存在”:0,
“已锁定”:0,
“sub_id”:1,
“电话号码”:0,
“错误代码”:0,
“创建者”:“com.android.mms”,
"见":一,,
“优先事项”:,
“oppo_草案”:1,
“sim_id”:-1,
“oppo_mass”:0,
“oppo_计时器”:0,
“oppo_集团地址”:“BZ-FPANDA”,
“收集的oppo_”:0,
“运营日期”:1506925025000,
“oppo_服务_消息_短信_类型”:0,
“已删除”:0,
“同步状态”:0,
“oppo_短信类型”:0,
“$$hashKey”:“对象:56”
}]
}
var module=angular.module(“myApp”,[]);
模块控制器(“MainCtrl”,函数($scope){
$scope.messages=JSONdata;
});

{{地址}
  • {{message | json}}

我必须通过创建Arr来规范JSOn