Если начать с массивом вы дали:
var arr = [["A",["05",90]],["A",["04",240]],["A",["03",235]],["B",["00",123]],["B",["01",234]]];
затем создать новый массив для хранения значений:
var final = [];
и просто комбинируют все элементы третьего уровня (например, ["05",90]
и ["01",234]
) каждого второго уровня (например, "A"
и "B"
) путем циклического перемещения по массиву:
for(var i = 0; i < arr.length; i++) {
var found = false;
for(var j = 0; j < final.length; j++) {
if(arr[i][0] == final[j][0]) {
final[j][1].push(arr[i][1]);
found = true;
break;
}
}
if(!found) {
final[final.length] = [arr[i][0], [[arr[i][1][0], arr[i][1][1]]]];
}
}
Это по существу метод сортировки: если «ключ» равен одному в конечном массиве, он добавляет его в этот. Если нет, добавьте его до конца final
.
Вот рабочий пример на JSFiddle: link.
Это выводит массив:
["A", [["05", 90], ["04", 240], ["03", 235]]], ["B", [["00", 123], ["01", 234]]]
в соответствии с просьбой.
Также, как прокомментировал @PaulS, было бы желательно использовать объекты вместо Strings, чтобы сделать их парами Key-Value. Но в моем ответе я застрял с массивами.
Поскольку эти (' "А",' "B" ') являются _Strings_ вы можете безопасно переходите через _Object_ перед тем, как преобразовать обратно в _Array_ –