使用角foreach循环来重新排列JSON
Using angular foreach loop to rearrange JSON
我有一个ng-repeat,它返回对象数组,如下所示:
[{"day":"10","title":"day","summary":"summary","description":"ok","_id":"53f25185bffedb83d8348b22"}]
[{"day":"3","title":"day","summary":"summary","description":"ok","_id":"53f25185bffedb83d8348b22"}]
我想把对象拉出来并把它们推到另一个数组中,这样它们的格式就像这样:
[
{"day":"10","title":"day","summary":"summary","description":"ok","_id":"53f25185bffedb83d8348b22"},
{"day":"3","title":"day","summary":"summary","description":"ok","_id":"53f25185bffedb83d8348b22"
}]
目标是在数组上使用order。是否有可能将JSON重构为这种格式,然后访问数据?
以下是我的观点供参考:
<div class="calDynamic" data-ng-repeat="n in [] | range:100">
<div ng-repeat="cal in calendar[n].year | filterKey:month">
<p>{{cal}}</p>
</div>
</div>
我的JSON格式:
{
"_id" : ObjectId("53f252537d343a9ad862866c"),
"year" : {
"December" : [],
"November" : [],
"October" : [],
"September" : [],
"August" : [],
"July" : [
{
"day" : "21",
"title" : "u",
"summary" : "u",
"description" : "ok",
"_id" : ObjectId("53f252537d343a9ad862866d")
}
],
"June" : [],
"May" : [],
"April" : [],
"March" : [],
"February" : [],
"January" : []
},
"__v" : 0
},
{
"_id" : ObjectId("53f252537d343a9ad862866c"),
"year" : {
"December" : [],
"November" : [],
"October" : [],
"September" : [],
"August" : [],
"July" : [
{
"day" : "3",
"title" : "u",
"summary" : "u",
"description" : "ok",
"_id" : ObjectId("53f252537d343a9ad862866d")
}
],
"June" : [],
"May" : [],
"April" : [],
"March" : [],
"February" : [],
"January" : []
},
"__v" : 0
}
只是详细说明我的评论来回答:-
您可以这样做,将分散在不同月份的数组合并为一个数组。
//obj has the the array result that is the input
var temp = [];
var result = temp.concat.apply(temp,obj.map(function(itm){ //Get each object in the source array that hold the year.
return temp.concat.apply(temp, Object.keys(itm.year).map(function(key){ //Get Month for each yeah and flatten it out
return itm.year[key]; //Get day array for each of the month in each year
}));
}));
Object.keys(obj.year)
==>将属性Year
中的月份提供给一个数组Array.prototype.map
==>您传入月份数组,并从所有月份中获得天数的2D数组。[].concat
==>返回数组连接后的数组。它可以接受多个数组作为参数,所以我们使用function.apply
方便地将2D转换为1D。
本
Array.prototype。concat允许将两个数组连接为一个数组。但是,它只是javascript,与Angular无关,操作方法如下:
var a = [{"day":"10","title":"day","summary":"summary","description":"ok","_id":"53f25185bffedb83d8348b22"}];
var b = [{"day":"3","title":"day","summary":"summary","description":"ok","_id":"53f25185bffedb83d8348b22"}];
var c = a.concat(b); // returns the concatenated array.
相关文章:
- jQuery匹配JSON对象的部分文本
- 在循环中分配json值时,值被覆盖
- 需要帮助设置json数组
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 使用JQuery解析JSON嵌套数组
- 如何在php中按元素按字母顺序排列json文件
- 以树形结构排列JSON
- 比较两个JSON数组并重新排列新的JSON数组格式
- 以表格格式排列JSON数据
- JQuery数组重新排列JSON对象
- 使用角foreach循环来重新排列JSON
- 需要重新排列JSON
- 根据值重新排列JSON的一部分
- JSON菜单按字母顺序排列
- 当数据不按顺序排列时,如何对数组中的json数据进行排序
- JSON数据按月排列/重新排序
- 如何按字母顺序排列JSON元素使用localeCompare()向下一级