цикл с for (in) в Javascript не соответствует ColdFusion - PullRequest
3 голосов
/ 02 мая 2019

В ColdFusion я могу сделать это

<cfscript>
  favorites = [{"broker_label":"spectra"}]; 

  for (afav in favorites)   {
    writedump(afav);
  }
</cfscript>

И я получаю каждую строку в массиве.

Если я попробую это в Javascript

favorites = [{"broker_label":"spectra"}];   

for (var afav in favorites) {
  console.log(JSON.stringify(afav));
}

И все, что я получаю, это 0, или, если быть точным. "\"0\""

Что происходит?

Ответы [ 2 ]

6 голосов
/ 02 мая 2019

Если вы хотите перебрать значения массива, вы можете использовать for…of или array.forEach()

favorites = [{"broker_label":"spectra"}]; 

for (let fav of favorites)   {
            console.log(JSON.stringify(fav));
}

// or:

favorites.forEach(elem => console.log(JSON.stringify(elem)))

for…in перебирает свойства, которые в случае массивов являются индексами.Обратите внимание, что использование for…in с массивами не рекомендуется, если важен порядок:

From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in:

Примечание: for ... in не должно бытьиспользуется для перебора массива, где важен порядок индекса.

0 голосов
/ 02 мая 2019

ColdFusion возвращает каждый элемент в массиве.

Javascript возвращает индекс элемента в массиве.Чтобы получить аналогичные результаты, мне пришлось

 for (var afav in favorites)    {
            console.log(JSON.stringify(favorites[afav]));
 }
...