2016-08-10 3 views
0

を。スプリット配列は、エラーが発生:私はすでに分割された配列を分割したくない機能

var string = '2016-08-08,63|2016-08-07,67|2016-08-06,64|2016-08-05,53|2016-08-04,63'; 
    var array_dt = string.split(','); 
    var array_s = array_dt.split('|'); 
    console.log(array_s); 

コードはTypeError: array_dt.split is not a functionを返します。

私はsplit()は、配列を分割することができないことを推測しています。私は間違っていますか?ここで

は、私はそれのように見てみたい方法です。 array_dtについて:2016-08-08,2016-08-07,2016-08-06,2016-08-05,2016-08-04array_sについて:63,67,64,53,63。私は両方の変数をグラフ(行)に使用するので、数値の日付を出力することができます。私のコードは例です!

どうすればこの問題を解決できますか?

Demo

+4

配列は 'split()'できません。分割機能はありません – adeneo

+0

私は思った通りです。しかし、私は後になってどのように達成できますか? – Erik

+0

'string.split( '、')'によって生成された個々の文字列を分割することができます。 –

答えて

2

あなたは両方の文字に分割したい場合は、ちょうどあなたがしたい場合これは、あなたに値を交互に配列を与える

var string = '2016-08-08,63|2016-08-07,67|2016-08-06,64|2016-08-05,53|2016-08-04,63'; 
 
var array_dt = string.split(/[,|]/); 
 

 
console.log(array_dt)

正規表現を使用しますあなたが行うことができ、それを分割

var string = '2016-08-08,63|2016-08-07,67|2016-08-06,64|2016-08-05,53|2016-08-04,63'; 
 
var array_dt = string.split(/[,|]/); 
 

 
var array1 = array_dt.filter((x,i) => (i%2===0)); 
 
var array2 = array_dt.filter((x,i) => (i%2!==0)); 
 

 
console.log(array1, array2)

それとも、一度にすべてを行うにしたい場合は、パフォーマンスが重要な場合は、あなたがに戻すだろ対象

var string = '2016-08-08,63|2016-08-07,67|2016-08-06,64|2016-08-05,53|2016-08-04,63'; 
 

 
var array = string.split(/[,|]/).reduce(function(a,b,i) { 
 
    return a[i%2===0 ? 'dates' : 'numbers'].push(b), a; 
 
}, {numbers:[], dates:[]}); 
 

 
console.log(array)

に値を減らすことができます古い学校のループ、および2つの配列

var string = '2016-08-08,63|2016-08-07,67|2016-08-06,64|2016-08-05,53|2016-08-04,63'; 
 

 
var array = string.split(/[,|]/); 
 
var array1 = []; 
 
var array2 = []; 
 

 
for (var i = array.length; i--;) { 
 
    if (i % 2 === 0) { 
 
    array1.push(array[i]); 
 
    } else { 
 
    array2.push(array[i]); 
 
    } 
 
} 
 

 
console.log(array1, array2)

+0

'split()'は正規表現を扱うことができますか?クール!私はそれを知らなかった。私を勉強してくれてありがとう。 – Erik

+0

私はあなたのアンサーを受け入れることを選んだのは、それが最短だったので、本当にうまくいったのです!しかし、そのパフォーマンスはどうですか?それは最適化されていますか? – Erik

+0

@ErikEdgren - perfomance用のバージョンも追加しましたが、非常に大きな文字列でない限り、ほとんどの使用例で十分です。 – adeneo

2
var string = '2016-08-08,63|2016-08-07,67|2016-08-06,64|2016-08-05,53|2016-08-04,63'; 
var array_dt = []; 
var array_s = []; 
string.split('|').forEach(function(el){ 
    var temp = el.split(","); 
    array_dt.push(temp[0]); 
    array_s.push(temp[1]); 
}); 
console.log(array_dt); 
console.log(array_s); 
1

ちょうどそれを一つずつステップを実行します - 2016-08-08,63ように見えるアイテムであなたを残して、最初のパイプによって分割。次に、それらのそれぞれについてコンマで区切り、2つの出力配列に値を挿入します。

var string = '2016-08-08,63|2016-08-07,67|2016-08-06,64|2016-08-05,53|2016-08-04,63'; 

var arr = string.split("|"); 
var array_dt = []; 
var array_s = []; 
arr.forEach(function(item) { 
    var x = item.split(","); 
    array_dt.push(x[0]); 
    array_s.push(x[1]); 
});