我有一个字符串as

string = "firstName:name1, lastName:last1"; 

现在我需要一个对象obj这样

obj = {firstName:name1, lastName:last1}

我如何在JS中做到这一点?


当前回答

在你的情况下,简短而漂亮的代码

Object.fromEntries(str.split(',').map(i => i.split(':')));

其他回答

实际上,最好的解决方案是使用JSON:

文档

JSON。女孩(文本[一]);

例子:

1)

var myobj = JSON.parse('{ "hello":"world" }');
alert(myobj.hello); // 'world'

2)

var myobj = JSON.parse(JSON.stringify({
    hello: "world"
});
alert(myobj.hello); // 'world'

3) 传递一个函数给JSON

var obj = {
    hello: "World",
    sayHello: (function() {
        console.log("I say Hello!");
    }).toString()
};
var myobj = JSON.parse(JSON.stringify(obj));
myobj.sayHello = new Function("return ("+myobj.sayHello+")")();
myobj.sayHello();

如果你正在使用JQuery:

var obj = jQuery.parseJSON('{"path":"/img/filename.jpg"}');
console.log(obj.path); // will print /img/filename.jpg

记住:eval是邪恶的!: D

这个简单的方法…

var string = "{firstName:'name1', lastName:'last1'}";
eval('var obj='+string);
alert(obj.firstName);

输出

name1

如果我没理解错的话:

var properties = string.split(', ');
var obj = {};
properties.forEach(function(property) {
    var tup = property.split(':');
    obj[tup[0]] = tup[1];
});

我假设属性名在冒号的左边,它所取的字符串值在右边。

注意Array。forEach是JavaScript 1.6——您可能需要使用工具包来实现最大的兼容性。

在你的情况下,简短而漂亮的代码

Object.fromEntries(str.split(',').map(i => i.split(':')));