2017-02-20 59 views

回答

0

你可以分割字符串,並檢查是否爲字符串值isNaN或乘數值數組。

var array = [ 'type=A', 'day=45', 'bar=0' ], 
 
    object = Object.create(null); 
 

 
array.forEach(function (a) { 
 
    var p = a.split('='); 
 
    object[p[0]] = isNaN(p[1]) ? p[1] : +p[1]; 
 
}); 
 

 
console.log(object);

+0

太感謝你了:) –

0
  1. 遍歷每個項目陣列
  2. 拆分上=
  3. 添加數值在到對象,在鍵索引

var arr = [ 'type=A', 'day=45' ]; 
 
var object = {}; 
 

 
for (var i = 0; i < arr.length; i++) { 
 
    var currentItem = arr[i].split('='); 
 
    var key = currentItem[0]; 
 
    var value = currentItem[1]; 
 
    object[key] = value; 
 
} 
 

 
console.log(object);

0

使用Array.prototype.reduce()功能的解決方案:

var arr = [ 'type=A', 'day=45' ], 
 
    trans = arr.reduce(function(r, s){ 
 
     var parts = s.split('='); 
 
     r[parts[0]] = isNaN(parts[1]) ? parts[1] : +parts[1]; 
 
     return r; 
 
    }, {}); 
 

 
console.log(trans);

+0

太感謝你了。這是最簡單的 –

0

有可能一百萬不同的方式來此,這樣一來使用兩個不同的功能。 _.map()調用在每個元素上運行,分割(和解析)元素(如果它匹配一個字符正則表達式)。然後它使用Lodash的.fromPairs函數,該函數將由2個元素數組組成的數組轉換爲對象。

var arr = ['type=A', 'day=45']; 
 
var obj = _.fromPairs(_.map(arr, function(item) { 
 
    var parts = item.split('='); 
 
    var digits = /^\d+$/; 
 
    if (digits.test(parts[1])) parts[1] = parseInt(parts[1]); 
 
    return parts; 
 
})); 
 
console.log(obj);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

+0

謝謝我會嘗試這種方法。 –

相關問題