我有一個像下面如何將數組傳遞給lodash對象?
var arr = [ 'type=A', 'day=45' ];
var trans = { 'type': 'A', 'day': 45 }
請寫出最簡單,最有效的方法:)
我有一個像下面如何將數組傳遞給lodash對象?
var arr = [ 'type=A', 'day=45' ];
var trans = { 'type': 'A', 'day': 45 }
請寫出最簡單,最有效的方法:)
你可以分割字符串,並檢查是否爲字符串值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);
太感謝你了:) –
=
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);
使用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);
太感謝你了。這是最簡單的 –
有可能一百萬不同的方式來此,這樣一來使用兩個不同的功能。 _.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>
謝謝我會嘗試這種方法。 –
你需要解析陣列中的每個項目採用分體式字符串對象 – Izikon