将具有数组的数组映射到数组

迈克尔·安杰洛

可以说,例如,我有这个数组与数组:

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个小时了

妮娜·斯科茨(Nina Scholz)

您可以使用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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将对象数组映射到具有数组的分组对象

来自分类Dev

JQ将数组映射到具有索引的对象-如何

来自分类Dev

如何将具有重复值的数组映射到Javascript中的唯一数组?

来自分类Dev

javascript 将一个新数组映射到一个添加新属性的现有数组上

来自分类Dev

将SwiftyJSON映射到数组

来自分类Dev

将数组部分映射到新数组

来自分类Dev

将索引数组映射到坐标数组

来自分类Dev

将键数组映射到值数组

来自分类Dev

将数组映射到数组内部

来自分类Dev

将数组映射到对象数组

来自分类Dev

将数组映射到新数组

来自分类Dev

将数组转换为具有数组值的对象

来自分类Dev

根据单独的对象将数组映射到具有深度的对象

来自分类Dev

JavaScript:如何将具有嵌套数组的对象映射到表以进行React

来自分类Dev

Ruby:将字符串数组映射到数组数组

来自分类Dev

具有数组的ArrayList

来自分类Dev

将哈希数组反向映射到哈希

来自分类Dev

自动将数组映射到列表

来自分类Dev

将数组索引映射到矩阵

来自分类Dev

将php数组映射到嵌套的json

来自分类Dev

将数组映射到int Java

来自分类Dev

将表单提交映射到数组

来自分类Dev

将数组索引映射到矩阵

来自分类Dev

将位置映射到数组索引

来自分类Dev

将php数组映射到嵌套的json

来自分类Dev

python将字典映射到字典数组?

来自分类Dev

将数组映射到int Java

来自分类Dev

将Java数组映射到Frege

来自分类Dev

将 json 值映射到数组