Javascript 使用随机键AngularJS显示JSON
我有一个JSON对象。我需要用ng repeat显示此数据。问题是数组的基键正在更改。我需要我来解决这个问题。此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":
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