web-dev-qa-db-ja.com

Node.js:それぞれについて…機能しない

Node.js(v0.4.11)でfor each ... inを使用したかった。

私はこれを次のように使用します:

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 を参照してください。

59
pvorb

残念ながら、ノードはJavaScript 1.6で指定されているにもかかわらず、for each ... inをサポートしていません。 Chromeは同じJavaScriptエンジンを使用し、 と報告 に同様の欠点があります。

array.forEach(function(item) { /* etc etc */ })で解決する必要があります。

編集:Googleの公式V8ウェブサイトから:

V8は、 ECMA-262 で指定されているECMAScriptを実装します。

for each ...inがJavaScript 1.6にあると言っている同じMDN Webサイトでは、ECMAバージョンにはない、つまり、おそらくNodeにないということです。

119
for (var i in conf) {
  val = conf[i];
  console.log(val.path);
}
67
ace

https://github.com/cscott/jsshaper JavaScript 1.8からECMAScript 5.1へのトランスレーターを実装します。これにより、Webkitまたはノードで実行されるコードで「for each」を使用できます。

6

Node.jsでサポートされているECMAScriptのバージョンにはfor each inがありません。現在はFirefoxでのみサポートされています。

注意すべき重要なことは、JavaScriptバージョンはGecko(Firefoxのエンジン)とRhino(常に数バージョン遅れている)にのみ関連するということです。 Nodeは、ECMAScript仕様に準拠したV8を使用します

2
Juan Mendes

これは古い質問かもしれませんが、物事を最新の状態に保つために、NodeJSで動作するjavascriptのforEachメソッドがあります。 docs からのリンクです。そして例:

     count = countElements.length;
        if (count > 0) {
            countElements.forEach(function(countElement){
                console.log(countElement);
            });
        }
2
toing_toing

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
}
0
SwiftNinjaPro