2017-04-06 89 views
0

我正在使用angularJs的谷歌圖表。我面臨的問題是圖表中使用的數據必須是一個數組,但我擁有的數據類型是一個對象。那麼我怎麼把它轉換成一個數組。 數據我有:轉換對象到數組Angularjs

Object {Normale: 1129, urgente: 153} 

數組想有會是這樣的:

[['priorite', 'nb'], ['urgente', 1129],['normale', 153]] 

謝謝

回答

0

Lodash是完美的輕鬆做到這一點。

  1. 使用toPairs方法的對象轉換爲對
  2. 使用Array.unshift方法在​​第一位置
  3. 插入['priorite', 'nb']這一切! ;)

var obj = {Normale: 1129, urgente: 153}; 
 
var arr = _.toPairs(obj); 
 
arr.unshift(['priorite', 'nb']); 
 

 
console.log(arr);
<!doctype html> 
 

 
<html lang="en" ng-app="app"> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <script src="https://cdn.jsdelivr.net/lodash/4.17.4/lodash.min.js"></script> 
 
</head> 
 

 
<body> 
 
    
 
</body> 
 
</html>

您還可以通過他們的價值秩序的優先級(第一是急,最後被VeryLow)是這樣的:

var obj = {VeryLow: 100, Normal: 500, Urgent: 1000, Low: 250}; 
 
var arr = _.toPairs(obj); 
 
arr = arr.sort(function compare(a, b) { 
 
    if (a[1] > b[1]) 
 
    return -1; 
 
    if (a[1] < b[1]) 
 
    return 1; 
 
    return 0; 
 
}); 
 
arr.unshift(['priorite', 'nb']); 
 

 
console.log(arr);
<!doctype html> 
 

 
<html lang="en" ng-app="app"> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <script src="https://cdn.jsdelivr.net/lodash/4.17.4/lodash.min.js"></script> 
 
</head> 
 

 
<body> 
 

 
</body> 
 
</html>

+0

謝謝!這正是我需要的。 – Jiji

0
var myArray = []; 
angular.forEach(function(obj) { 
    myArray.push({"priorite": obj.Normale, "nb": obj.urgente}); 
}); 
+0

雖然這段代碼是受歡迎的,可能會提供一些幫助,這將是[很棒如果它包含* how *和* why *的解釋](// meta.stackexchange.com/q/114762),則可以解決問題。請記住,你正在爲將來的讀者回答這個問題,而不僅僅是現在問的人!請編輯您的答案以添加解釋,並指出適用的限制和假設。 –

0

您可以在Object.keys使用reduce

var o = { 
 
    Normale: 1129, 
 
    urgente: 153 
 
}; 
 

 
var a = Object.keys(o).reduce((a, b) => a.concat({ 
 
    priorite: b, 
 
    nb: o[b] 
 
}), []); 
 

 
console.log(a);

+0

謝謝你的回答,但我是否也可以用這種方式轉換對象:[['priorite','nb'],['urgente',1129],['normale',153]]? – Jiji