将字符串转换为多个对象(javascript)
我有以下字符串:Jack:13,Phil:15,Lucy:12我正试图从这个字符串中提取对象 此字符串将有3个具有年龄的people对象。如何做到这一点 我尝试了以下方法:将字符串转换为多个对象(javascript),javascript,json,Javascript,Json,我有以下字符串:Jack:13,Phil:15,Lucy:12我正试图从这个字符串中提取对象 此字符串将有3个具有年龄的people对象。如何做到这一点 我尝试了以下方法: var s = 'Jack:13,Phil:15,Lucy:12' var obj1 = eval("("+s+")"); var obj2 = JSON.parse(s); 记录任何obj变量都会返回错误。我错过了一个简单的技巧吗?任何解释都将不胜感激。您可以拆分字符串并使用map在数组中循环。这将返回一个对象数组
var s = 'Jack:13,Phil:15,Lucy:12'
var obj1 = eval("("+s+")");
var obj2 = JSON.parse(s);
记录任何obj变量都会返回错误。我错过了一个简单的技巧吗?任何解释都将不胜感激。您可以拆分字符串并使用map在数组中循环。这将返回一个对象数组
var s=‘杰克:13,菲尔:15,露西:12’;
var result=s.split','.mapo=>{
设[k,v]=o.split':';
返回{[k]:v};
};
console.logresult 一般来说,如果您正在对字符串进行替换以将其转换为可以传递eval或JSON.parse的内容,那么这可能不是最好的方法。特别是,如果可以,请避免在此处使用eval或其同类新函数,并始终避免使用不可信输入的eval或其同类新函数 一对带有贴图的拆分将执行以下操作: 康斯特s='杰克:13,菲尔:15,露西:12' const people=s split, .mape=>e.split: .map[name,age]=>{name,age};
控制台。logpeople 您可以拆分这些部分,并使用键/值对构建一个新对象 变量字符串='Jack:13,Phil:15,Lucy:12', 结果=对象。分配…字符串 .分裂',' .maps=>[k,v]=>{[k]:v}s.split':' ; console.logresult 您可以尝试以下方法:
const result = s.split(',')
.map(value => value.split(':'))
.reduce((acc, [name, value]) => {
acc[name] = +value;
return acc;
}, {});
输出:
{
"Jack": 13,
"Phil": 15,
"Lucy": 12
}
易于使用。地图:
var s=‘杰克:13,菲尔:15,露西:12’;
变量项=s.split','
.mapentry=>entry.split':'
.mapitem=>{名称:项[0],年龄:项[1]};
console.logitems 我相信你已经找到了很多方法,我想我应该添加另一种方法 让我们=‘杰克:13,菲尔:15,露西:12’ 设obj={}; s、 拆分,.forEachpart=>{ obj[part.split:[0]]=part.split:[1]; }
console.logobj;5个答案,但没有人解释它是如何工作的,为什么不使用eval。这就是OP需要的,除了简单地发布解决方案。@Adelin-我确实开始说了些什么,然后想起来了……嗯。但你是对的,我要补充一点。