使用javascript在前端组织数据

使用javascript在前端组织数据,javascript,Javascript,我可以在前端对我的数据进行console.log记录,但我需要做一些逻辑来组织这些数据,我不确定针对此类问题的最佳方法是什么。我需要得到一个“计数”多少分析属于每个项目。因此,下面每个对象都有一个项目id和一个分析id。因此,必须有一种方法可以使用javascript为每个对象创建一个计数变量,该变量表示每个项目有多少个分析。非常感谢您的帮助 你可以这样做。为迭代的每个对象创建一个对象,检查是否有该项目的现有属性。\u id。如果没有,则将其初始化为0。然后加上1 var projectCou

我可以在前端对我的数据进行console.log记录,但我需要做一些逻辑来组织这些数据,我不确定针对此类问题的最佳方法是什么。我需要得到一个“计数”多少分析属于每个项目。因此,下面每个对象都有一个项目id和一个分析id。因此,必须有一种方法可以使用javascript为每个对象创建一个计数变量,该变量表示每个项目有多少个分析。非常感谢您的帮助



你可以这样做。为迭代的每个对象创建一个对象,检查是否有该项目的现有属性。\u id。如果没有,则将其初始化为0。然后加上1

var projectCounts = {}, index = 0; length = someData.length;
for ( ; index < length; index++) {
  var projectId = someData[index].project_id;
  if (!projectCounts['Project' + projectId]) {
    projectCounts['Project' + projectId] = 0;
  }
  projectCounts['Project' + projectId]++
}
var projectCounts={},index=0;长度=someData.length;
对于(;索引<长度;索引++){
var projectId=someData[index]。项目id;
如果(!projectCounts['Project'+projectd]){
projectCounts['Project'+projectId]=0;
}
项目计数['Project'+projectd]++
}
小提琴:

编辑:因此,如果您想要每个对象上的这些计数,您可以通过每次迭代设置计数。因为对象只是对内存中某个点的引用,所以循环完成后,每个引用都将具有最终值

小提琴:

var projectCounts={},index=0;长度=someData.length;
对于(;索引<长度;索引++){
var projectId=someData[index]。项目id;
如果(!projectCounts['Project'+projectd]){
projectCounts['Project'+projectId]=0;
}
项目计数['Project'+projectd]++
someData[索引]。计数=项目计数;
}
如果您不喜欢拥有每个计数,而只想要特定的项目计数,那么您可以创建一个计数对象并使用该引用

小提琴:

var projectCounts={},index=0;长度=someData.length;
对于(;索引<长度;索引++){
var projectId=someData[index]。项目id;
如果(!projectCounts['Project'+projectd]){
projectCounts['Project'+projectId]={count:0};
}
projectCounts['Project'+projectId].count++
someData[index].counts=projectCounts['Project'+projectId];
}

您可以循环数组并更新将项目ID映射到其计数的对象:

//简化的示例数据
风险价值分析=[
{
项目编号:1,
分析编号:10
},
{
项目编号:2,
分析编号:11
},
{
项目编号:3,
分析编号:12
},
{
项目编号:3,
分析编号:13
}
];
变量计数={};
分析。forEach(函数(el){
var pid=el.project\U id;
counts[pid]=counts[pid]| | 0;//如果我们以前没有看过此项目,则从0开始
++计数[pid];
});

console.log(计数);//{1:1,2:1,3:2
这是一个好主意,但是它只是创建了一个全新的对象。我需要为每个当前对象添加一个“count”变量,这样我就可以将它们显示在一个表中。好的,你可以总是在你迭代的每个人身上设置这个对象,只需在javascript中通过引用传递,它们都将继续更新当你在每个对象上迭代时。例如:如果你能更新你的小提琴,这将真正帮助我理解,再次感谢你删除其他项目的计数。
var projectCounts = {}, index = 0; length = someData.length;
for ( ; index < length; index++) {
  var projectId = someData[index].project_id;
  if (!projectCounts['Project' + projectId]) {
    projectCounts['Project' + projectId] = 0;
  }
  projectCounts['Project' + projectId]++
  someData[index].counts = projectCounts;
}
var projectCounts = {}, index = 0; length = someData.length;
for ( ; index < length; index++) {
  var projectId = someData[index].project_id;
  if (!projectCounts['Project' + projectId]) {
    projectCounts['Project' + projectId] = {count: 0};
  }
  projectCounts['Project' + projectId].count++
  someData[index].counts = projectCounts['Project' + projectId];
}