#javascript #jquery #json
#javascript #jquery #json
Вопрос:
мой приведенный ниже код группирует данные и создает элементы. Однако отсутствует последняя группа. Я думаю, что мой цикл плохой.
data:
[
{"GROUPID":"A","QTY":3,"STORE":"NYC"},
{"GROUPID":"A","QTY":4,"STORE":"CT"},
{"GROUPID":"B","QTY":2,"STORE":"NJ"},
{"GROUPID":"B","QTY":5,"STORE":"NJ"},
{"GROUPID":"C","QTY":1,"STORE":"MA"}
]
итак, моя группировка будет выглядеть так
A NYC-3 NJ-4
B MA-1 CT — 4
C NJ-5
пока что мой цикл создает группы A и B, но не создает группу C. .. из ajax
success: function(msg) {
var c = jQuery.parseJSON(msg.d);
var myGroupid = c[0].GROUPID;
var mList = "";
var sum = "";
for (var i = 0; i < c.length; i ) {
currentGroup = c[i].GROUPID;
if ((currentGroup !== myGroupid) {
//compare if current record's group id is different than previous record.
//if so, then means a new group. Send to plugin.
//call groupPlugin(myGroupid,mList)
}
mList = '<li'
" data-group=" ' c[i].GROUPID '" data-store="' c[i].STORE '"</li>'
}
}
Комментарии:
1. Пожалуйста, сделайте отступ в своем коде правильно и единообразно. Это поможет вам и всем остальным диагностировать проблемы.
2. @MikeC, спасибо за совет. Я попытался немного очистить. Мой цикл повторяет каждую строку и в основном сравнивает текущий идентификатор группы с последним. Если отличается, создайте группу и добавьте строки. Однако не создается группа для последней строки.
Ответ №1:
Я надеюсь, что правильно понял ваш вопрос. Я бы поступил так:
groups = [];
for (var i = 0; i < c.length; i ) {
var groupID = c[i].GROUPID;
if(groups[groupID]=="undefiend"){
groups[groupID]=[];
}
groups[c[i].GROUPID].append(c[i]);
}
в конце у вас будет ассоциативный массив groups
, содержащий все группы, проиндексированные по их groupID
затем, чтобы получить все элементы группы (т.Е. A)
var group = groups["A"];
for (i=0;i<group.length;i ){
console.log(group[i].STORE;
}
Комментарии:
1. спасибо за ваш ответ, но я знаю, как получить идентификатор группы, но как я могу получить дочерние элементы? нужно ли мне сначала создать массив group, а затем перебирать этот массив, чтобы найти дочерние элементы?