2016-06-02 3 views
1

Мне нужна помощь в переводе следующего кода es6 на код es5.Перевести ES6 'for' loop from ES5 'for-each' loop

for (let [field_name, field] of impList) { 
//// some code 
} 

Спасибо.

+2

Это зависит от того, что такое 'impList'. «Карта»? Массив? – Bergi

+0

Вы пытались использовать транспилер? [Использовать Babel] (http://babeljs.io/repl/#?evaluate=true&lineWrap=false&presets=on&experimental=false&loose=false&spec=false&playground=true&code=for%20 (пусть% 20% 5Bfield_name% 2C% 20field% 5D% 20of % 20impList)% 20% 7B% 0D% 0A% 20% 20% 20% 2F% 2F% 20some% 20code% 0D% 0A% 7D). – Bergi

ответ

3

Предполагая, что impList является Array (или массив-подобный объект), а не ES6 Iterable type (что потребует polyfills и т.д.), вы можете примерно перевести это в for цикла:

for (var i=0; i<impList.length; i++) { 
    var field_name = impList[i][0]; 
    var field = impList[i][1]; 
} 

Или forEach:

impList.forEach(function(entry) { 
    var field_name = entry[0]; 
    var field = entry[1]; 
}); 

в дополнении к impList возможно будучи Iterable, есть некоторые нюансы, которые здесь я не переводил на ES5, потому что довольно много предостережения s. Вот почему вы должны использовать транспилятор, такой как Babel.

+0

, честно говоря, я не понимаю код Babel: for (var _iterator = impList.entries() [Symbol.iterator](), _step;! (_ IteratorNormalCompletion = (_step = _iterator.next()) done); _iteratorNormalCompletion = true) { \t var _step $ value = _slicedToArray (_step.value, 2); var field_name = _step $ value [0]; \t var _field = _step $ value [1]; } – badigard

+0

Выход Babel написан для компьютеров, а не для людей. Он включает в себя полиполки, прокладки и функциональные возможности для решения нюансов, описанных выше. Все, что вам нужно знать, вы вставляете в ES6 и выдает действительный ES5! – CodingIntrigue

+0

Когда я помещаю код es5, я получаю ошибку на объекте «Символ». – badigard