Цикл по массиву объектов

271
23 мая 2017, 03:27

Сервер отдает JSON c массивом объектов, перебираю их обычным for.

 for(var i = 0; i < data[0].target.length; i++){
    if(data[0].target[i].code == Geo){
      $('.old').html(data[0].target[i].price_high + ' ' + data[0].target[i].currency);
      $('.new').html(data[0].target[i].price + ' ' + data[0].target[i].currency);
    }
 }

Будет-ли этот код лучше работать с конструкцией for in и есть ли в ней преимущества в конкретно этой задаче?

Answer 1

В плане производительности так же. Но нет гарантии, что все объекты(если у вас объект, а не массив) будут иметь ключи по возростанию. Может быть data[0], data[1], data[3], а data с ключом 2 не окозалось и for тут выкинет ошибку, а for in нет.

For in не викинет ошибку

var data = { 
  0: 'bla', 
  1: 'bla2', 
  3: 'bla3', 
} 
 
for (key in data) { 
  console.log(data[key]); 
}

For викинет ошибку

var data = { 
  0: 'bla', 
  1: 'bla2', 
  3: 'bla3', 
} 
 
for (ar i = 0; i < data.length; i++) { 
  console.log(data[i]); 
}

Ваш цикл в for in

for(key in data[0].target){
  if(data[0].target[key].code == Geo){
    $('.old').html(data[0].target[key].price_high + ' ' + data[0].target[key].currency);
    $('.new').html(data[0].target[key].price + ' ' + data[0].target[key].currency);
  }
}
READ ALSO
Именованное свойсто массива JavaScript

Именованное свойсто массива JavaScript

Насколько мне известно, массив - это список значений доступ к которым осуществляется по числовому индексуНедавно натолкнулся на такой код:

269
Массив в JavaScript

Массив в JavaScript

Необходимо сделать, чтобы помимо основной функции, которая сейчас работает, в каждой строке массива количество его элементов увеличивалось...

334
Проблема с циклом JS

Проблема с циклом JS

Всем приветНужна ваша помощь

300