0

「、」と「;」で区切られた 1 と 0 を含む文字列があります。

var x = "1,1,0;1,0,0;1,1,1;"; x.split(";");

これは、1,0,0 と 1,1,1 の 2 つの文字列だけを含む配列を出力します。
私が望むのは、これらすべての数値を 2 次元配列に入れることです:
1 1 0
1 0 0
1 1 1
文字列を分割するよりもスマートな方法がある場合は、お知らせください。
そうでなければ、上記の問題を解決する方法を教えてください。

4

2 に答える 2

6
  1. 文字列を引用符で囲む必要があります。
  2. コメンターは正しいです。配列には3つの文字列がすべて含まれています。配列のインデックスは 1 ではなく 0 から始まることを忘れていませんか?
  3. x.split は x を変更せず、配列を返します

あなたはおそらくこのようなものが欲しい

    var str = "1,1,0;1,0,0;1,1,1";
    var arr = str.split(";");

    for (var i = 0, len = arr.length; i < len; i++)
    {
        arr[i] = arr[i].split(",");
    }

そして結果を検証する

    for (var i = 0, len = arr.length; i < len; i++)
    {
        for (var j = 0, len2 = arr[i].length; j < len2; j++)
        {
            document.write(arr[i][j] + " | ");
        }

        document.write("<br>");
    }
于 2013-10-19T21:00:29.127 に答える
2

次の文字列を指定します。

  var x = "1,1,0;1,0,0;1,1,1";

次の方法で、0 と 1 の 2 次元配列を取得できます。

var st = x.split(";")
var twoDimensionalArray = st.map(function(k){
    return k.split(","); 
});

もちろん、JS メソッド チェーンのおかげで、すべてを次のように行うことができます。

var twoDimTable = x.split(";").map(function(k){
  return k.split(","); 
});

結果:

 [
   ["1","1","0"],
   ["1","0","0"],
   ["1","1","1"]
 ]

まあ、結果を得るために

 [
    [1,1,0],
    [1,0,0],
    [1,1,1]
 ]

ループを実行して、配列内の各値 k に対して k = +k; を実行できます。文字列ではなく数値を取得します。ただし、これらの値を数値の操作で使用すると、JavaScript が自動的にキャストします。

于 2013-10-19T21:16:34.563 に答える