Javascript从字符串数组中创建一个对象

时间:2016-05-10 09:55:56

标签: javascript jquery

我有一个这样的数组:var arr = ["1:a", "2:b", "3:c"];

从上面的数组我想要一个对象:var obj = { "1": "a", "2": "b", "3": "c" }

我在做:

  var obj = {}
    $.each(arr, function (i, value) {
        var valueSplit = value.split(':');
// I don't know how to make the object
    });

编辑: 我的问题标记为重复,而我提出的问题与标记的重复问题完全相反。

3 个答案:

答案 0 :(得分:2)

从您的代码中,代替您可以撰写的评论

obj[valueSplit[0]] = valueSplit[1];

这可以写成简单的简化:

var obj = arr.reduce(function(x,y) { return z = y.split(':'), x[z[0]]=z[1], x; }, {});

var arr = ["1:a", "2:b", "3:c"];
var obj = arr.reduce(function(x,y) { return z = y.split(':'), x[z[0]]=z[1], x; }, {});
document.write(JSON.stringify(obj));

答案 1 :(得分:1)

只需添加作业。

var obj = {}
$.each(arr, function (i, value) {
    var valueSplit = value.split(':');
    obj[valueSplit[0]] = valueSplit[1]; 
});

答案 2 :(得分:0)

只需尝试这个

var arr = ["1:a", "2:b", "3:c"];
var map = {};
arr.forEach( function(val){ 
   var keyVal = val.split( ":" ); 
   map[ keyVal[ 0 ] ] = keyVal[ 1 ];
});

map是您要查找的对象。

<强>样本

var arr = ["1:a", "2:b", "3:c"];
var map = {};
arr.forEach( function(val){ 
   var keyVal = val.split( ":" ); 
   map[ keyVal[ 0 ] ] = keyVal[ 1 ];
});

document.body.innerHTML += JSON.stringify( map, 0, 4 );