2017-01-11 39 views
0

什麼是這個數組逗號分隔值如何將逗號分隔的字符串數組分割成不同的數組?

[ 'com--test,LFutx9mQbTTyRo4A9Re5ksjdnfsI4cKN4q2,on', 
    'com--fxtrimester,SEzlksdfMpW3FxkSbzL7eo5MmqkPczCl2,on', 
    'com--fxtrimester,LFutx9mQbTTyRoldksfns4A9Re5I4cKN4q2,on' ] 

的轉換成三排的最好方法?

[ 'com--test',   [ LFutx9mQbTTyRo4A9Re5Ilsdf4cKN4q2', ['on', 
    'com--fxtrimester',  SEzMpW3FxkSbzL7eo5MmlkdfqkPczCl2', 'on', 
    'com--fxtrimester' ]  LFutksdfx9mQbTTyRo4A9Re5I4cKN4q2 ] 'on'] 

我嘗試類似:

var indexToSplit = unique.indexOf(','); 
var status = unique.slice(3, indexToSplit - 1); 
var use = unique.slice(2, indexToSplit - 2); 
var pros = unique.slice(0, indexToSplit - 3); 
console.log(pros); 

但我想通這是錯誤的...任何幫助表示讚賞!

+0

你是什麼意思三個數組? ['on','on','on']是數組之一嗎? – Sabrina

+0

我認爲這個問題很清楚......第一個數組將是com-test種類。 第二個是Lsdhfbsdhfbsifashdbaisdq2字符串,第三個是'on'值。 – arnoldssss

+0

這是一種非常奇怪的方式來格式化這三個數組。 :) –

回答

3

您將不得不遍歷數組並使用string.split來獲取單獨的零件。

一旦你有獨立的部分,你可以推他們到必要的數組;

var d = [ 'com--test,LFutx9mQbTTyRo4A9Re5ksjdnfsI4cKN4q2,on', 
 
    'com--fxtrimester,SEzlksdfMpW3FxkSbzL7eo5MmqkPczCl2,on', 
 
    'com--fxtrimester,LFutx9mQbTTyRoldksfns4A9Re5I4cKN4q2,on']; 
 

 
var result = [[],[],[]]; 
 
var len = 3; 
 
d.forEach(function(str, i){ 
 
    var _tmp = str.split(','); 
 
    for (var i = 0; i<len; i++){ 
 
    result[i].push(_tmp[i]) 
 
    } 
 
}) 
 

 
console.log(result)


有點通用的方法。

  • 遍歷數據,並使用逗號(,
  • 遍歷拆分值,並檢查是否必要數組存在分割的每個字符串。
  • 如果沒有,初始化數組,但不能做p[i] = [],因爲這會推到第一個值。你將不得不初始化所有先前的值。爲此,您可以使用new Array(length)。默認情況下,如果length大於0,則所有索引將初始化爲undefined
  • 現在推送到必要的數組。職位將維持。

var d = ['com--test,LFutx9mQbTTyRo4A9Re5ksjdnfsI4cKN4q2,on', 
 
    'com--fxtrimester,SEzlksdfMpW3FxkSbzL7eo5MmqkPczCl2,on', 
 
    'com--fxtrimester,LFutx9mQbTTyRoldksfns4A9Re5I4cKN4q2,on,test' 
 
]; 
 

 

 
var result = d.reduce(function(p, c, index) { 
 
    var _tmp = c.split(','); 
 
    for (var i = 0; i < _tmp.length; i++) { 
 
    // Check if position not defined. 
 
    if (p[i] === undefined) 
 
     // Initialize array and add default (undefined) to all elements before current element 
 
     p[i] = new Array(index); 
 

 
    p[i].push(_tmp[i]) 
 
    } 
 
    return p; 
 
}, []) 
 

 
console.log(result)

+0

很酷,謝謝我會等6分鐘接受答案 – arnoldssss

+0

我很高興能幫上忙! :-) – Rajesh

+1

@arnoldssss我已經添加了一個通用的解決方案,將消除對'len = 3'的需求。希望能幫助到你。 – Rajesh

1

由於您的問題不要求一個更一般的情況下,我安全地假設這3陣列。我們可以使用的forEach功能上下面代碼陣列可以是下列內容之一的可能的解決方案

var arr1 = []; 
 
var arr2 = []; 
 
var arr3 = []; 
 

 
var x = ['com--test,LFutx9mQbTTyRo4A9Re5ksjdnfsI4cKN4q2,on', 'com--fxtrimester,SEzlksdfMpW3FxkSbzL7eo5MmqkPczCl2,on', 'com--fxtrimester,LFutx9mQbTTyRoldksfns4A9Re5I4cKN4q2,on'] 
 

 
x.forEach(function(data) { 
 
    var dataArray = data.split(','); 
 
    arr1.push(dataArray[0]); 
 
    arr2.push(dataArray[1]); 
 
    arr3.push(dataArray[2]); 
 
}); 
 

 

 
console.log(arr1) 
 
console.log(arr2) 
 
console.log(arr3)

+0

請添加說明。只是添加工作代碼不夠好。 – Rajesh

+0

補充:),從下次開始記住。謝謝 –

1

隨着map這變爲:

  • 對於位置X選自0,1和2:
  • 將列表中的每個項目轉換爲數組,並選擇第X個項目

var start = [ 'com--test,LFutx9mQbTTyRo4A9Re5ksjdnfsI4cKN4q2,on', 
 
    'com--fxtrimester,SEzlksdfMpW3FxkSbzL7eo5MmqkPczCl2,on', 
 
    'com--fxtrimester,LFutx9mQbTTyRoldksfns4A9Re5I4cKN4q2,on' ] 
 

 

 
var out = [0,1,2].map(i => 
 
    start.map(x => x.split(',')[i])) 
 
console.log(out)

相關問題