arr = ["a=1","b=2","c=3"];
转换成 obj={a:1,b:2,C:3}
虽然 夜颩偲雨 和 张栈不全 给出很妙的解决方法,但我看还没有人用过eval实现,所以尝试写了个用eval实现的例子
var arr = ["a=1","b=2","c=3"];
o = arrToObject(arr);
alert(o);
alert(o.a + " " + o.b + " " + o.c);
function arrToObject(arr){
var strJs = '({';
for(var i=0;i<arr.length;i+=1){
var as = arr[i].split("=");
strJs = strJs + as[0] + ':' +'"' + as[1] + '"' +',';
}
strJs = strJs.substr(0,strJs.length-1) + '})';
return eval(strJs);
}
obj = {}
for (var i=0; i<arr.length; i++) {
[k, v] = arr[i].split("=");
obj[k] = v;
}
var obj = JSON.parse('{' + arr.join(',').replace(/(\w)=/g, '"$1":') + '}');
var obj = new Object();
var arr = ["a=1","b=2","c=3"];
for (var x in arr){
var split = arr[x].split('=');
obj[split[0] ] = split[1];
}
var obj = JSON.parse('{' + arr.map(function(el){
return '"' + el.replace('=','":');
}) +'}');
Array.prototype.toObject = function() {
var obj = {};
for (var index in this) {
if (this.hasOwnProperty(index)) {
if(this[index].indexOf&&this[index].indexOf('=')>-1){
var splits = this[index].split('=');
obj[splits[0]] = splits[1];
}else{
obj[index] = this[index];
}
}
}
return obj;
};
var arr0 = ["a=1","b=2","c=3"];
var arr1 = ['r',5,6];
arr0.toObject();//Object {a: "1", b: "2", c: "3"}
arr1.toObject();//Object {0: "r", 1: 5, 2: 6}