在jQuery中的Array内部的Object内部的数组

时间:2018-04-25 16:46:36

标签: jquery arrays object

我有以下来源:

let source = [{ name: "Player1", cars:[{id: 20, count: 11}, {id: 23, count: 6}, {id: 2, count: 5}], cars_total: 22 }, { name: "Player2", cars:[{id: 11, count: 5}, {id: 24, count: 5}, {id: 42, count: 4}], cars_total: 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);
            }
        }
    });

现在发生的事情很奇怪。有时

  • 没有任何反应或
  • 而不是“玩家1的22辆汽车,玩家2的24辆汽车”,它写着“玩家1辆22辆,玩家1辆24辆”或
  • “玩家1辆1辆,玩家1辆1辆,玩家1辆1辆,玩家1辆1辆,玩家1辆1辆,玩家1辆1辆,玩家1辆1辆”等等。 ..

我每时每刻检查一下变量,一切似乎都很好。但不存储信息。现在我不知道我能做什么......

这是存储我的信息的正确方法吗?或者我应该使用几个数组并在需要时尝试将它们组合起来?

哦,评论显示了我的其他一些尝试。例如。通过推动并尝试将同一类汽车组合成一排(并增加计数)。

我期待与你们找到一个解决方案:)尽管有这种奇怪的情况......询问你是否需要更多信息。

编辑:

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

1 个答案:

答案 0 :(得分:1)

试试这个,

&#13;
&#13;
output["person name"]
&#13;
&#13;
&#13;

您可以看到输出对象包含每个人拥有的所有汽车的数量。

因此,要查看特定人员的所有可用车辆,

output.personName //(personName is a variable)

char[] testStrand = {'A', 'T', 'T', 'A', 'G', 'C', 'T', 'A', 'T', 'G', 'A', 'A', 'C', 'C', 'T', 'A', 'C', 'C', 'A', 'T'};
for (int i = 0; i < testStrand.length; i++) {
    testStrand[i] = testStrand[i] == 'A' ? 'T' :
        testStrand[i] == 'T' ? 'A' :
            testStrand[i] == 'G' ? 'C' :
                testStrand[i] == 'C' ? 'G' : testStrand[i];
}

希望这有帮助。