我有一个如下所示的数组
var arr = [ 'type=A', 'day=45' ];
var trans = { 'type': 'A', 'day': 45 }
请写出最简单,最有效的方式:)
答案 0 :(得分: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);
答案 1 :(得分:0)
=
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);
答案 2 :(得分: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);
&#13;
答案 3 :(得分: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);
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
&#13;