Angularjs 遍历对象数组以按日期对所有数据进行分组
我的json文件如下所示:Angularjs 遍历对象数组以按日期对所有数据进行分组,angularjs,Angularjs,我的json文件如下所示: { "components":{ "record1": [ { "date":1619038000, "name":"Susan", "status":"true" }, { "date":1419038000, "name":"Vinay", "status":"false" }, { "date":1419038000, "name":"Ajay", "st
{
"components":{
"record1":
[
{
"date":1619038000,
"name":"Susan",
"status":"true"
},
{
"date":1419038000,
"name":"Vinay",
"status":"false"
},
{
"date":1419038000,
"name":"Ajay",
"status":"true"
}
],
"record2":[
{
"date":1419037000,
"name":"Soumya",
"status":"false"
},
{
"date":1619038000,
"name":"Savio",
"status":"true"
},
{
"date":1326439320,
"name":"Thereza",
"status":"false"
}
]
}
}
这是我的js文件:
var app = angular.module("myApp",[]);
app.controller("Control",function($scope,$http){
$http.get('myData.json').
success(function(data){
$scope.tableData = data.components;
});
});
我希望对两个数组中的数据进行分组,并以这样一种方式显示它们,即将具有相似日期的数据分组在一起。也许如果我有更多的记录,那么我该怎么做。请帮我做这件事。我想把他们分为以下几类:
date name status 17th april Susan true
Soumya false 19th april Vinay false
Ajay true 20th april Thereza false
我不确定我是否理解了这个问题,但这就是如何收集具有相同日期的元素:
function group(inputs, groupClause) {
var g = {};
for (var key in inputs) {
for (var innerKey in inputs[key]) {
if (inputs[key][innerKey]) {
if (!g[inputs[key][innerKey][groupClause]]) g[inputs[key][innerKey][groupClause]] = [];
g[inputs[key][innerKey][groupClause]].push(inputs[key]);
}
}
}
return g;
}
你可以这样称呼它:
var myGroup = group([myobject["components"]["record1"], myobject["components"]], "date");
var input = [];
var index = 1;
while (myobject["components"]["record" + index]) {
input.push(myobject["components"]["record" + index]);
index++;
}
var myGroup = group(input, "date");
如果您事先不知道将有多少条记录,则可以执行以下操作:
var myGroup = group([myobject["components"]["record1"], myobject["components"]], "date");
var input = [];
var index = 1;
while (myobject["components"]["record" + index]) {
input.push(myobject["components"]["record" + index]);
index++;
}
var myGroup = group(input, "date");
我不确定我是否理解了这个问题,但这就是如何收集具有相同日期的元素:
function group(inputs, groupClause) {
var g = {};
for (var key in inputs) {
for (var innerKey in inputs[key]) {
if (inputs[key][innerKey]) {
if (!g[inputs[key][innerKey][groupClause]]) g[inputs[key][innerKey][groupClause]] = [];
g[inputs[key][innerKey][groupClause]].push(inputs[key]);
}
}
}
return g;
}
你可以这样称呼它:
var myGroup = group([myobject["components"]["record1"], myobject["components"]], "date");
var input = [];
var index = 1;
while (myobject["components"]["record" + index]) {
input.push(myobject["components"]["record" + index]);
index++;
}
var myGroup = group(input, "date");
如果您事先不知道将有多少条记录,则可以执行以下操作:
var myGroup = group([myobject["components"]["record1"], myobject["components"]], "date");
var input = [];
var index = 1;
while (myobject["components"]["record" + index]) {
input.push(myobject["components"]["record" + index]);
index++;
}
var myGroup = group(input, "date");
看一看,您添加了它,得到了一组过滤器,其中也包括groupBy
,它可以根据您指定的索引对数组的内容进行分组 看一看,您添加了它,得到了一组过滤器,其中也包括groupBy
,它可以根据您指定的索引对数组的内容进行分组 使用的解决方案。假设对象存储在名为obj
的变量中。然后你可以:
var arr = obj.components.record1.concat(obj.components.record2);
var a = _.groupBy(arr, function(n) {
return n.date;
});
使用问题中给出的对象运行此代码将给出如下结果:
Object { 1326439320: Array[1], 1419037000: Array[1], 1419038000: Array[2], 1619038000: Array[2] }
如果要在其中一个组中循环,只需选择bey键:
a["1419038000"].forEach(x => console.log(x))
这将产生:
对象{日期:1419038000,名称:“Vinay”,状态:“false”}反对{ 日期:1419038000,姓名:“Ajay”,状态:“true”} 使用的解决方案。假设对象存储在名为
obj
的变量中。然后你可以:
var arr = obj.components.record1.concat(obj.components.record2);
var a = _.groupBy(arr, function(n) {
return n.date;
});
使用问题中给出的对象运行此代码将给出如下结果:
Object { 1326439320: Array[1], 1419037000: Array[1], 1419038000: Array[2], 1619038000: Array[2] }
如果要在其中一个组中循环,只需选择bey键:
a["1419038000"].forEach(x => console.log(x))
这将产生:
对象{日期:1419038000,名称:“Vinay”,状态:“false”}反对{ 日期:1419038000,姓名:“Ajay”,状态:“true”}
你说的是“两个数组”,但你只显示了一个数组。还有,你说你想把他们分组,但没有说怎么分组。示例输入和理想输出都是理想的。此处record1是一个数组,record2是另一个数组谢谢,我也对您的问题进行了编辑,以使其更具可读性,并编写了一个答案。我如何在html中使用它以我在末尾问题中显示的方式显示它?您说的是“两个数组”但你只展示了一个。还有,你说你想把他们分组,但没有说怎么分组。示例输入和理想输出都是理想的。这里record1是一个数组,record2是另一个数组,我也对你的问题进行了编辑,使其更具可读性,并写了一个答案。我将如何在html中使用它,以我在问题结尾处显示的方式显示它?我将如何在html中使用它,以我在问题结尾处显示的方式显示它?这是一个不同的问题,如果这个问题解决了问题,然后你可以考虑接受它,并问一个单独的问题,你在HTML中指定你想要什么,这在这个上下文中是不清楚的。但为了给您一个提示,您可以使用table和inside tr items,其中每个组将代表一行,您可以使用
yes来分隔组项目。好的,我将以更好的方式发布我的问题。。Thanks@Susanna你的问题没有错。没关系。这是一个可以回答的事实,证明这是一个体面的问题。然而,这个网站是一个问答网站,一个问题应该是一个可以理解和解决的问题。如果我们用原本不在问题范围内的东西使当前的对话复杂化,那么这次对话的质量就会受到影响。因此,我建议您可以接受此答案作为当前问题的答案,另外询问一个有关HTML问题的问题,并让我知道。@Susanna此答案仅适用于解决您根据日期对项目进行分组的问题。如果你觉得不够,请告诉我。然而,如果你愿意接受一个被证明是正确的答案,用户会更有动力回答你的问题。问进一步的问题而不是接受正确的答案不会真正激励用户帮助你。我将如何在html中使用它以我在末尾问题中显示的方式显示它?这是另一个问题,如果这个问题解决了问题,然后你可以考虑接受它,并问一个单独的问题,你在HTML中指定你想要什么,这在这个上下文中是不清楚的。但为了给您一个提示,您可以使用table和inside tr items,其中每个组将代表一行,您可以使用
yes来分隔组项目。好的,我将以更好的方式发布我的问题。。Thanks@Susanna你的问题没有错。没关系。这是一个可以回答的事实,证明这是一个体面的问题。然而,这个网站是一个问答网站,一个问题应该是一个可以理解和解决的问题。如果我们用原本不在问题范围内的东西使当前的对话复杂化,那么这次对话的质量就会受到影响。因此,我建议您可以接受此答案作为当前问题的答案,另外询问一个有关HTML问题的问题,并让我知道。@Susanna此答案仅适用于解决您根据日期对项目进行分组的问题。如果你觉得不够,请告诉我。然而,如果你愿意接受一个被证明是正确的答案,用户会更有动力回答你的问题。再问一个问题而不是接受一个正确的答案并不能真正激励用户帮助你。好的,谢谢。但是如果我有很多记录数组在里面会怎么样呢?我如何循环them@Soumya,请查看更新后的答案是否更有帮助。好的,谢谢。