2016-08-10 47 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_dt2016-08-08,2016-08-07,2016-08-06,2016-08-05,2016-08-04。對於array_s63,67,64,53,63。我將使用兩個變量到圖表(行),以便我可以打印出數字的日期。我的代碼就是一個例子!

我該如何做到這一點?

Demo

+4

數組不能被分割(),它沒有分割功能 – 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)

如果性能是很重要的,你會恢復到老學年循環和兩個陣列

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)
通過管道分割第一,離開你看起來像 2016-08-08,63項目 -

+0

'split()'可以處理正則表達式嗎?涼!我不知道。感謝您瞭解我。 – Erik

+0

我選擇接受你的anser,因爲它是最短的,並且它的工作非常好!但它的表現如何?它是否優化? – 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

只要做到這一步一步的時間。然後對於每一個,用逗號分隔,並將這些值插入到兩個輸出數組中。

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]); 
}); 
相關問題