@kote22

Модификация массива, работает криво что делать?

Суть такая: делается заброс к БД, все попадает в массив вида:
[['1','2','Носки','32','1000'],['1','2','Носки','31','980'],['1','2','Носки','30','960'],['1','2','Варежки','1','20'],['1','2','Варежки','1','20']]
последние 2 числа надо сложить соответсвенно для каждого id (0-й обьект массива)
и в итоге должно получится:
[['1','2','Носки','100','2999'],['1','2','Варежки','10','200']]

var item_arr = new Array();
request.on('row', function(columns) {
if (0 == item_arr.length) {
  var items = new Array();
items.push(columns[0].value);
items.push(columns[1].value);
items.push(columns[2].value);
items.push(columns[3].value);   
 
 if(columns[4].value == null){
  items.push(0);
}else{
 items.push(columns[4].value);
}
 
item_arr.push(items);
}else{
 for (var i = 0; i < item_arr.length; i++) {
  if (item_arr[i][0] == columns[0].value) {
item_arr[i][4] = Number(item_arr[i][4]) + Number(columns[4].value);
item_arr[i][3] = Number(item_arr[i][3]) + Number(columns[3].value);
 
/// вот до сюдова, все работает отлично, дальше - выводит ад
}else{
var items = new Array();
items.push(columns[0].value);
items.push(columns[1].value);
items.push(columns[2].value);
items.push(columns[3].value);   
 
 if(columns[4].value == null){
items.push(0);
}else{
 items.push(columns[4].value);
}
item_arr.push(items);
 
    }
 
  }
}
})
  • Вопрос задан
  • 117 просмотров
Пригласить эксперта
Ответы на вопрос 2
Комментировать
evgeniy8705
@evgeniy8705
Повелитель вселенной
Прошу прощения, но у вас отвратительный code style. Советую вам обратить внимание на это. Читать ваш код даже и не хочется. Следуйте одному стилю написания кода.

Хотя бы вот так сделайте:
var item_arr = new Array();

request.on("row", function(columns) {
  if (0 == item_arr.length) {
    var items = new Array();

    items.push(columns[0].value);
    items.push(columns[1].value);
    items.push(columns[2].value);
    items.push(columns[3].value);
   
    if(columns[4].value == null){
      items.push(0);
    } else {
      items.push(columns[4].value);
    }
 
    item_arr.push(items);
  } else {
    for (var i = 0; i < item_arr.length; i += 1) {
      if (item_arr[i][0] == columns[0].value) {
        item_arr[i][4] = Number(item_arr[i][4]) + Number(columns[4].value);
        item_arr[i][3] = Number(item_arr[i][3]) + Number(columns[3].value);
      } else {
        var items = new Array();

        items.push(columns[0].value);
        items.push(columns[1].value);
        items.push(columns[2].value);
        items.push(columns[3].value);
 
        if(columns[4].value == null) {
          items.push(0);
        } else {
          items.push(columns[4].value);
        }

        item_arr.push(items);
    }
  }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы