2015-09-28 112 views
2

我需要將數組拆分成若干子數組並替換某個字符。將數組拆分成子數組並替換字符

首先我運行一個函數來計算數組中重複的數量。然後,我用值和實例的數量構建一個新的數組。

代碼:

angular.forEach($scope.financial, function(data) { 
     counts[data] = (counts[data] || 0)+1; 
    }) 

結果:

[4, {25: 4}, 5, {25: 1}, 3, {10: 1}, 4, {10: 1}] 

我所尋找的是陣列分成幾個子排列,並用逗號代替冒號。

像這樣:

[[4,25,4],[5,25,1],[3,10,1],[4,10,1]] 

有什麼建議?

+3

,你能否告訴我們的初始內容' $ scope.financial'? – Phylogenesis

+0

最初的內容是這樣的:'[[4,25],[5,25],[3,10],[4,10]]' – TietjeDK

+0

爲什麼不使用具有屬性名稱的常規對象呢?當然不得不閱讀文檔以瞭解不同的索引意味着什麼... –

回答

1

這可以用一個簡單的循環完成。但是,如果您無法保證輸入的格式,則會建議對數據的完整性進行一些檢查。

function getKey(o) { 
 
    for (var prop in o) { 
 
    if (o.hasOwnProperty(prop)) { 
 
     return prop; 
 
    } 
 
    } 
 
} 
 

 
var data = [4, {25: 4}, 5, {25: 1}, 3, {10: 1}, 4, {10: 1}]; 
 
var i = 0; 
 
var output = []; 
 
var key; 
 

 
for (i = 0; i < data.length; i += 2) { 
 
    key = getKey(data[i + 1]); 
 
    output.push([data[i], parseInt(key, 10), data[i + 1][key]]); 
 
} 
 

 
//Print the output 
 
console.log(output); 
 

 
var el = document.createElement('div'); 
 
el.innerHTML = JSON.stringify(output); 
 
document.body.appendChild(el);

1

下面提到的轉換函數將接受[4, {25: 4}, 5, {25: 1}, 3, {10: 1}, 4, {10: 1}]類型的reponseArray並將其轉換爲子陣[[4,25,4],[5,25,1],[3,10,1],[4,10,1]]

fiddle

function converter(responseArray) { 
    var mainArray=[], subArray; 
    for (var i = 0; i < responseArray.length; i++) { 
     if(i%2 == 0) { 
     subArray= []; 
     subArray.push(responseArray[i]); 
     } else { 
      var obj = responseArray[i]; 
      for(var key in obj) { 
       subArray.push(key * 1); 
       subArray.push(obj[key] * 1); 
      } 
      mainArray.push(subArray); 
     } 
    } 
    console.log(mainArray); 
    return mainArray; 
}