2017-11-24 12 views
0

자바 스크립트로 다시 작성하려고하는 일부 PHP 코드가 있습니다. 디버거를 통해 원래 JS 코드를 실행할 때 여분의 괄호가 마음에 들지 않습니다 (아래 참조).PHP to Javascript 다차원 배열

편집 : 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]); 
    } 
?> 

는 지금은 자바 스크립트에 위의 코드를 변환 할 노력하고있어.

라인

[]에 디버거 오류 아웃 n[item[0]][] = [{"final"...

오류는 배열 후 별도의 브라켓을 좋아하지 않는 Unexpected token ]

말한다. 그러나 배열을 설명하기 위해 내가 어떻게해야할지 모르겠습니다. 누군가 도울 수 있습니까?

자바 스크립트 :

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