ホーム>source

ネストされた配列データから二重引用符を削除する方法

["[a,b,c],[b,c,d],[e,f,g]"]

この配列に

[[a,b,c],[b,c,d],[e,f,g]]

JavaScriptを使用して

あなたの答え
  • 解決した方法 # 1

    a, b, c に有効な値が必要です  など、これなしでは意味がありませんそして それも不可能です。

    1つの方法は、次のように有効なJSON文字列を作成して解析することです。

    var arr = ["[1,2,3],[4,5,6],[7,8,9]"];
    var json = "{ \"x\" : [" + arr[0] + "] }";
    console.log(json);
    var res = JSON.parse(json);
    console.log(res.x);
    console.log(res.x[0]);
    console.log(res.x[1]);
    console.log(res.x[2]);
    
    

    別の方法は eval() を使用することです :

    var arr = ["[1,2,3],[4,5,6],[7,8,9]"];
    var res = eval("[" + arr[0] + "]");
    console.log(res);
    console.log(res[0]);
    console.log(res[1]);
    console.log(res[2]);
    
    

    注意してください- eval()  フィードされる可能性のあるほぼすべてのJavaScriptを実行するため、危険と見なされます(JSON.parse()と同じ方法で静的オブジェクトデータに限定されません)。


    更新 - もし、あんたがしなければならない リテラル a,b,c を使用します  など。その後、これらの名前はコード内で事前定義された変数として存在する必要があり、 eval() のみを使用できます  なぜなら、 eval()  プログラムのスコープ内で実行されますが、JSON.parse()は実行されません。

    例:

    var a = 1,
      b = "hello",
      c = new Date(),
      d = ["p", "q", "r"],
      e = 5,
      f = new Object(),
      g = 7;
    var arr = ["[a,b,c],[b,c,d],[e,f,g]"];
    var res = eval("[" + arr[0] + "]");
    console.log(res);
    console.log(res[0]);
    console.log(res[1]);
    console.log(res[2]);
    
    

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ winforms - C#メインフォーム参照の例外