2017-11-24 24 views
0

私はJavascriptで書き直そうとしているPHPコードをいくつか持っています。オリジナルのJSコードをデバッガで実行すると、余分な括弧が嫌いです(下記参照)。PHPからJavascript多次元配列

EDIT:PHPは素晴らしいFYIです。

PHP:

<?php 
    $g = array(array("H", "T", 1), array("L", "M", 4), array("U", "V", 6)); 
    $v = array(); 
    $n = array(); 

    foreach ($g as $item) { 
     array_push($v, $item[0], $item[1]); 
     $n[$item[0]][] = array("final" => $item[1], "cost" => $item[2]); 
     $n[$item[1]][] = array("final" => $item[0], "cost" => $item[2]); 
    } 
?> 

今私は、Javascriptのに上記のコードを変換しようとしています。ライン上の[]

n[item[0]][] = [{"final"...

上のデバッガエラータイムアウトエラーUnexpected token ]

は、それが配列の後に余分な括弧を好きではないと言います。しかし、私はどのように私は配列を記述することになっているか分からないのですか?助けてもらえますか?

Javascriptを:

var g = [ ["H", "T", 1], ["L", "M", 4], ["U", "V", 6] ]; 
var v = []; 
var n = []; 


g.forEach(function(item) { 
    v.push(item[0], item[1]); 
    n[item[0]][] = [{"final": item[1], "cost": item[2]}]; 
    n[item[1]][] = [{"final": item[0], "cost": item[2]}]; 
}); 

は、すべてのヘルプは大歓迎です!

答えて

2

問題は角かっこ[]内です。この表記法はPHPでは機能しますが、JavaScriptでは機能しません。これを行うには、pushメソッドを使用します。見てください:

var g = [ ["H", "T", 1], ["L", "M", 4], ["U", "V", 6] ]; 
var v = []; 
var n = []; 


g.forEach(function(item) { 
    v.push(item[0], item[1]); 
    n[item[0]].push([{"final": item[1], "cost": item[2]}]); 
    n[item[1]].push([{"final": item[0], "cost": item[2]}]); 
}); 
+0

うわー...とてもシンプルですが正解です。ブラボー! – bagofmilk