如何使用javascript或angular将一个数组的每个元素添加到其他数组中的对应元素
我需要按顺序将数组的元素添加到一起,这与[]中的问题非常相似,但我使用的是javascript和angular。我的数组最多可以包含31(天)的任意数量的元素,但它们在每个数据对象中的元素数量始终相同如何使用javascript或angular将一个数组的每个元素添加到其他数组中的对应元素,javascript,arrays,json,angularjs,angularjs-scope,Javascript,Arrays,Json,Angularjs,Angularjs Scope,我需要按顺序将数组的元素添加到一起,这与[]中的问题非常相似,但我使用的是javascript和angular。我的数组最多可以包含31(天)的任意数量的元素,但它们在每个数据对象中的元素数量始终相同 $scope.test31days = { "change_series": [ { "data": [0,0,0,2,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,2,0,0], "name": "EMERGENCY",
$scope.test31days = {
"change_series": [
{ "data": [0,0,0,2,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,2,0,0],
"name": "EMERGENCY",
"color": "#904040"},
{ "data": [0,1,3,0,0,0,0,1,2,3,3,0,0,0,2,1,1,1,0,0,1,1,3,3,1,0,0,1,2,2,0],
"name": "MINOR",
"color": "#333"},
{ "data": [0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0],
"name": "MAJOR",
"color": "#666"}
],
"change_title": "CHANGES"
}
我的控制台输出告诉我我正确地分离了元素(在某种程度上),但是当我使用if/elseif语句运行时,我会使浏览器崩溃,所以我知道我搞错了什么
$scope.getTotalChanges = function(){
var series = $scope.test31days.change_series;
var arry = [];
for(var i = 0; i < series.length; i++){
// console.log('change_series loop #', i);
// console.log('change_series.data length', series[i].data.length);
var seriesData = series[i].data;
// console.log('series[i].name', series[i].name)
// console.log('seriesData', seriesData)
for(var j = 0; j < seriesData.length; j++){
console.log('For inner #', j);
console.log('seriesData #', seriesData[j]);
if (j = 0) {
arry = seriesData;
} else if (j > 0) {
arry[j] += seriesData[j]
};
}
}
// return series;
console.log('arry ', arry);
return arry;
};
$scope.getTotalChanges=function(){
变量系列=$scope.test31days.change_系列;
var-arry=[];
对于(变量i=0;i0){
arry[j]+=系列数据[j]
};
}
}
//返回序列;
控制台日志('arry',arry);
返航;
};
我的最终目标是为31(天)var series=$scope.test31days.change\u series创建一个数据数组;
var dataLength=series[0]。data.length;
var result=Array.apply(null,新数组(dataLength)).map(Number.prototype.valueOf,0);//用零初始化结果数组
对于(变量i=0;i
不应该if(j=0)
beif(j==0)
?另外,尝试使用angular的内置for循环…angular.forEach(series,function(value,index){…你的逻辑在这里…});我尝试将其插入我的指令,结果显示为var result=new Array(dataLength).map(Number.prototype.valueOf,0);
正在返回一个NaN的数组。谷歌搜索告诉我这是数字中非法数字的结果。还有其他想法吗?那行应该是:var result=array.apply(null,new array(dataLength)).map(number.prototype.valueOf,0);
啊哈!非常感谢!
var series = $scope.test31days.change_series;
var dataLength = series[0].data.length;
var result = Array.apply(null, new Array(dataLength)).map(Number.prototype.valueOf,0); //initialize result array with zeros
for(var i = 0; i < series.length; i++) {
for(var j = 0; j < dataLength; j++) {
result[j] += series[i].data[j];
}
}