Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将字符串转换为多个对象(javascript)_Javascript_Json - Fatal编程技术网

将字符串转换为多个对象(javascript)

将字符串转换为多个对象(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在数组中循环。这将返回一个对象数组

我有以下字符串: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=‘杰克: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-我确实开始说了些什么,然后想起来了……嗯。但你是对的,我要补充一点。