jQuery中数组内部的对象内部的数组

jQuery中数组内部的对象内部的数组,jquery,arrays,object,Jquery,Arrays,Object,我有以下资料来源: let source=[{name:“Player1”, 汽车:[{id:20,计数:11},{id:23,计数:6},{id:2,计数:5}], 车辆总数:22辆 }, {名称:“玩家2”, 汽车:[{id:11,计数:5},{id:24,计数:5},{id:42,计数:4}], 车辆总数:14辆 }] 嗯。。我希望这就是我想要使用的那种存储。 一个玩家可以拥有多辆车(用其ID标识)。 e、 g Player1有 car-A(ID 20)11次 car-B(ID 23)6

我有以下资料来源:

let source=[{name:“Player1”,
汽车:[{id:20,计数:11},{id:23,计数:6},{id:2,计数:5}],
车辆总数:22辆
},
{名称:“玩家2”,
汽车:[{id:11,计数:5},{id:24,计数:5},{id:42,计数:4}],
车辆总数:14辆
}]

嗯。。我希望这就是我想要使用的那种存储。 一个玩家可以拥有多辆车(用其ID标识)。 e、 g

Player1有

  • car-A(ID 20)11次
  • car-B(ID 23)6次
  • car-C(ID 2)5次

等等。。。我使用选择器直接从网页接收这些信息

我想做的是将信息插入上面的数组,然后输出到某个地方

我的尝试:

        intVehicleId = $('a').attr('vehicle_type_id');
        if(intVehicleId == "undefined") intVehicleId = null;           

        strProfileLinkText = $('a').children('a[href^="/profile/"]').text();

        if(!strProfileLinkText == 0) {
            intGetNamePos = -1;
            intGetCarPos = -1;

            for (var i = 0; i < arrNames.length; i++){
                if(arrNames[i].name == strProfileLinkText) {
                    intGetNamePos = i;
                    break;
                }
            }
            intGetNamePos = -1;
            if(intGetNamePos > -1) {
                //if(arrNames[intGetNamePos].cars.length == 0) intGetCarPos = -1;
                //else intGetCarPos = $.each(arrNames[intGetNamePos].cars, function(idx2, val2) { if(val2.id == intVehicleId) return idx2; });

                //arrNames[intGetNamePos].cars_total++;

                for (var j = 0; j < arrNames[intGetNamePos].cars.length; j++){
                    //if(arrNames[intGetNamePos].cars[j].id == intVehicleId) intGetCarPos = j; break;
                }

                if(intGetCarPos > -1) {
                    //arrNames[intGetNamePos].cars[intGetCarPos].count++; arrNames[intGetNamePos].cars_total++;
                } else {
                    //arrNames[intGetNamePos].cars.push({id:intVehicleId, count:1}); arrNames[intGetNamePos].cars_total++;
                }
            } else {
                //arrNames.push({name:strProfileLinkText, cars:[{id:intVehicleId, count:1}], cars_total:1});

                intCarsId.id = 0; //intVehicleId
                intCarsId.count = 1;
                arrCars.push(intCarsId);

                strTemp.name = strProfileLinkText;
                strTemp.cars = arrCars;
                strTemp.cars_total = 1;
                console.log(strProfileLinkText);
                arrNames.push(strTemp);
            }
        }
    });
试试这个

const arrIDCars=[“A车”、“B车”、“C车”、“D车”、“E车];
const vehicleIdArr=[1,1,2,3,2,1,2,3,3,2,1,2,3,2,1,1];
常量strProfileLinkTextArr=[“p1”、“p1”、“p2”、“p3”、“p3”、“p2”、“p2”、“p2”、“p1”、“p1”、“p1”、“p2”、“p2”、“p3”、“p3”、“p2”、“p2”];
让输出={};
strProfileLinkTextArr.forEach((文本,索引)=>{
if(输出类型[文本]=“未定义”){
输出[文本]={};
}
const vId=车辆导航[索引];
如果(输出类型[文本][arrIDCars[vId-1]]=“未定义”){
输出[text]={…输出[text],[arrIDCars[vId-1]]:0};
}
输出[text][arrIDCars[vId-1]]++;
});

控制台日志(输出)
如果您可以使用Jquery,那么使用
$将其解析为数组就更容易了。只需通过在mspaint中绘制草图或编写代码来共享预期的输出,然后让我为您编写输出代码@Gepu“我直接从HTML的代码中接收这些信息”,这是什么意思?我不确定我是否理解你的问题。您从哪里获取数据?我从网页接收数据,从代码中选择数据。”例如,ID1。对不起,我的话太糟糕了…@GePu。给我看一些我编辑的文章的例子。希望现在能更好地理解:)
Input (later i replace the IDs with names):
ID 1 - Player 1
ID 1 - Player 2
ID 2 - Player 2
ID 3 - Player 3
ID 2 - Player 3
ID 1 - Player 2
ID 2 - Player 2

Expected output (of course in a table or whatever):
4x Player 2 | 3x ID 1, 1x ID 2
2x Player 3 | 1x ID 3, 1x ID 2
1x Player 1 | 1x ID 1