2016-07-26 5 views
1

文字列を2レベルの配列に分割する必要があります。分割を使ってjavascriptで2レベルの配列を作成する

は、文字列があると言う:
項目10〜項目11〜項目12 ^項目20〜項目21〜項目23^

私はPHPを知っている、それは同様の構造で になりたいです - hense構造

array(
[0]=> array(
    'item 10', 
    'item 11', 
    'item 12', 
), 
[1]=> array(
    'item 20', 
    'item 21', 
    'item 22', 
), 
) 

そう...
最初の分割は、この権利のように見えますか?

function createDataArray(xData) { 
    xData.split("^"); 
    --- WHAT DO I DO HERE? --- 

} 

あなたの助け

答えて

1

このようにして、目的の出力を得ることができます。あなたの例に基づいて

var str = 'item 10~item 11~item 12^ item 20~item 21~item 23^'; 
 

 
var arr = []; 
 
str.split('^').forEach(function(v) { 
 
    if (v) { 
 
    arr.push(v.trim().split('~')); 
 
    } 
 
}); 
 

 
console.log(arr);

+1

私はこれを使用して終わったので、私は個人的にはそれ以上readbleです。迅速な対応に感謝します;) - リアルタイムで助けてください –

1

をお願い申し上げうん、あなたはあなたの出力を思い付くsplitArray.reduceを使用することができます。

var input = 'item 10~item 11~item 12^ item 20~item 21~item 23^'; 
 
var splits = input.split(/\^\s*/).reduce(function(arr, item) { 
 
    if (item.length) { 
 
    arr.push(item.split('~')); 
 
    } 
 
    return arr; 
 
}, []); 
 
console.log(splits);

+0

どうもありがとう;) –

1

別のアプローチを行うことです分割してマップ+分割:

var result = input 
    .split('^')          // Is an array of strings 
    .map(function (str) { return str.split('~'); }); // Is an array of arrays 
+0

注、これは、末尾のために最後にあなたの空の配列項目を与えません'^'、 'result [1] [0]'には先行するスペースがあります。あらかじめ 'input'をクリーンアップすることができます。 – rgthree

+0

あなたの入力と追加の情​​報のために多くのおかげで –

1

:あなたの入力のための

 function createDataArray(xData) { 
      var q = xData.split("^"); //arr of arr 
      for (var i in q) { 
       q[i] = q[i].split('~'); 
      } 
      console.log(q); 
     } 
関連する問題