Node.js: для каждого... в нерабочем состоянии
Я хотел использовать for each ... in
с Node.js(v0.4.11).
Я использую его следующим образом:
var conf = {
index: {
path: {
first: "index.html",
pattern: "index/{num}.html"
},
template: "index.tpl",
limit: 8
},
feed: {
path: "feed.xml",
template: "atom.tpl",
limit: 8
}
}
for each (var index in conf) {
console.log(index.path);
}
Я получаю следующую ошибку:
for each (var index in conf) {
^^^^
node.js:134
throw e; // process.nextTick error, or 'error' event on first tick
^
SyntaxError: Unexpected identifier
at Module._compile (module.js:397:25)
at Object..js (module.js:408:10)
at Module.load (module.js:334:31)
at Function._load (module.js:293:12)
at require (module.js:346:19)
at Object.<anonymous> (/home/paul/dev/indexing/lib/Index.js:3:13)
at Module._compile (module.js:402:26)
at Object..js (module.js:408:10)
at Module.load (module.js:334:31)
at Function._load (module.js:293:12)
Где ошибка? for each ... in
поддерживается с Javascript 1.6.
Для получения информации об использовании for each ... in
см. MDN.
Ответы
Ответ 1
К сожалению, node не поддерживает for each ... in
, хотя он указан в JavaScript 1.6. Chrome использует тот же механизм JavaScript и сообщается как, имеющий аналогичный недостаток.
Вам нужно согласиться на array.forEach(function(item) { /* etc etc */ })
.
EDIT: с официального сайта Google V8:
V8 реализует ECMAScript, как указано в ECMA-262.
На том же веб-сайте MDN, где говорится, что for each ...in
находится в JavaScript 1.6, он говорит, что он не находится в какой-либо версии ECMA - следовательно, по-видимому, его отсутствие от Node.
Ответ 2
for (var i in conf) {
val = conf[i];
console.log(val.path);
}
Ответ 3
https://github.com/cscott/jsshaper внедряет переводчика с JavaScript 1.8 в ECMAScript 5.1, который позволит вам использовать "для каждого" в коде, запущенном на веб-кайте или node.
Ответ 4
Нет версии for each in
в версии ECMAScript, поддерживаемой Node.js, только поддерживаемой firefox в настоящее время.
Важно отметить, что версии JavaScript применимы только к Gecko (движок Firefox) и Rhino (который всегда имеет несколько версий). Node использует V8, который следует спецификациям ECMAScript
Ответ 5
Это может быть старый вариант, но просто для того, чтобы обновлять информацию, в javascript есть метод forEach, который работает с NodeJS. Здесь ссылка из документации. И пример:
count = countElements.length;
if (count > 0) {
countElements.forEach(function(countElement){
console.log(countElement);
});
}
Ответ 6
для тех, кто использовал php:
//add this function
function foreach(arr, func){
for(var i in arr){
func(i, arr[i]);
}
}
использование:
foreach(myArray, function(i, v){
//run code here
});
похож на версию php:
foreach(myArray as i=>v){
//run code here
}