可以说,例如,我有这个数组与数组:
var arrayWithArrays = [["peter","director","40"],["marie","author","10"],["marie","author","6"],["peter","director","9"]];
我想要一个具有这种格式的新数组(唯一名称,唯一名称的所有时间加起来):
var chartData = [["peter", 49],["marie",16]];
我已经尝试过分配东西,但是没有任何预期的效果。映射无法正常工作
var temp = _.map(arrayWithArrays ,function(x){
if(chartData[x[0]]){
chartData[x[0]] += parseInt(x[2]);
}else{
chartData[x[0]] = parseInt(x[2]);
}
});
老式的方式也无法实现
for (var x = 0; x < arrayWithArrays.length; x++) {
if(chartData.length != 0){
for (var i = 0; i < chartData.length; i++) {
if(chartData[i][0] == arrayWithArrays[x][0]){
chartData[i][2] += parseInt(arrayWithArrays[x][2]);
}else{
var array = [];
array[0] = arrayWithArrays[x][0];
array[1] = parseInt(arrayWithArrays[x][2]);
chartData.push(array);
}
}
}else{
var array = [];
array[0] = arrayWithArrays[x][0];
array[1] = parseInt(arrayWithArrays[x][2]);
chartData.push(array);
}
}
我认为我想得太多了,而且使它变得比实际更复杂...有人想出让我摆脱这种头痛的想法吗?我已经花了3个小时了
您可以使用Array#forEach
它,并使用一个对象作为对插入数组的引用。
var arrayWithArrays = [["peter", "director", "40"], ["marie", "author", "10"], ["marie", "author", "6"], ["peter", "director", "9"]],
result = [];
arrayWithArrays.forEach(function (a) {
if (!this[a[0]]) {
this[a[0]] = [a[0], 0];
result.push(this[a[0]]);
}
this[a[0]][1] += +a[2];
}, Object.create(null));
console.log(result);
在usersData
和中编辑结果rolesData
:
var arrayWithArrays = [["peter", "director", "40"], ["marie", "programmer", "10"], ["peter", "author", "10"], ["peter", "author", "6"], ["peter", "director", "9"], ["marie", "author", "2"], ["marie", "author", "3"], ["marie", "programmer", "9"]],
usersData = [],
rolesData = [];
arrayWithArrays.forEach(function (a) {
if (!this.user[a[0]]) {
this.user[a[0]] = { drilldown: a[0], name: a[0], y: 0, };
usersData.push(this.user[a[0]]);
}
this.user[a[0]].y += +a[2];
if (!this.role[a[0]]) {
this.role[a[0]] = { load: { id: a[0], data: [] } };
rolesData.push(this.role[a[0]].load);
}
if (!this.role[a[0]][a[1]]) {
this.role[a[0]][a[1]] = [a[1], 0];
this.role[a[0]].load.data.push(this.role[a[0]][a[1]]);
}
this.role[a[0]][a[1]][1]+= +a[2];
}, { user: Object.create(null), role: Object.create(null) });
console.log(usersData);
console.log(rolesData);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句