我有这个功能:
flotLinea:function(tareas){
var self = this;
console.info(tareas);
var aTar = new Array();
for(var i = 0;i<tareas.length;i++){
var val = new Array(new Date(tareas[i].fecha_registro),tareas[i].porcentaje);
aTar.push(val);
}
console.info(aTar);
},
使用 console.info(tareas);
打印此内容:
并使用console.info(aTar);
打印:
(来自 tareas 的数据总是在变化,因为数据来自下拉列表)
我需要使用相同的数据为每个 id_usu 创建一个新数组,我该怎么做?
例如,在这种情况下,我需要一个 id_usu = 4 的数组(有两个 id_usu = 4,所以我需要 id_usu = 4 的数据),一个 id_usu = 6 的数组和一个 id_usu = 9 的数组
我需要这样做,因为这些数据用于图表,因此,之后,每个用户( id_usu )在该图表中将具有不同的颜色。
最佳答案
根据我对您的问题陈述和您提供的代码的理解,我在下面提供了一个解决方案。
flotLinea:function(tareas){
var self = this;
console.info(tareas);
var aTar = new Array();
var idArray = [];
for(var i = 0;i<tareas.length;i++){
if(idArray.indexOf(tareas[i].id_usu) == -1){
var val = new Array(new Date(tareas[i].fecha_registro),
tareas[i].porcentaje);
idArray.push(tareas[i].id_usu);
aTar.push(val);
}
else{
for(var j = 0; j < aTar.length; j++){
if(tareas[i].id_usu == aTar[j][0].id_usu){
aTar[j].length = new Array(new Date(tareas[i].fecha_registro)
,tareas[i].porcentaje);
}
}
}
}
console.info(aTar);
}
我正在使用暴力破解类型的解决方案,性能总是可以提高。
我在上面的新数组上创建了 idArray
来保存唯一的 id_usu
,并且正在比较当前的 tareas[i].id_usu
已经存在于该数组中,如果不将新值推送到 aTar
数组并将 tareas[i].id_usu
推送到 idArray
, else 循环遍历 aTar
数组,找到已经包含当前 tareas[i].id_usu
对象的数组,并将新值推送到 aTar[j ].长度
.
关于javascript - 如何在 javascript 循环中为每个特定数据创建一个新数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32190431/