Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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/2/node.js/36.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_Node.js - Fatal编程技术网

Javascript 正在尝试将此字符串转换为对象

Javascript 正在尝试将此字符串转换为对象,javascript,node.js,Javascript,Node.js,我有这个字符串: posts{id,title},posts2{id,title} 我想将其转换为一个对象: { posts: [ 'id', 'title' ], posts2: [ 'id', 'title' ] } 如何执行此操作?假定字符串在指定格式下有效: 您可以将字符串拆分为成对的键列表项。 然后,对它们进行迭代,并按如下方式将它们插入到对象中: const stringify=string=>{ 常量obj={}; 如果(字

我有这个字符串:

posts{id,title},posts2{id,title}
我想将其转换为一个对象:

{
  posts: [
    'id', 
    'title'
  ],
  posts2: [
    'id', 
    'title'
  ]
}

如何执行此操作?

假定字符串在指定格式下有效:

您可以将字符串拆分为成对的键列表项。 然后,对它们进行迭代,并按如下方式将它们插入到对象中:

const stringify=string=>{
常量obj={};
如果(字符串){
const pairs=string.substring(0,string.length-1.split('}');
pairs.forEach(pair=>{
常量[key,value]=pair.split('{');
obj[key]=value.split(“,”).filter(字符串);
});
}
返回obj;
}
log(stringify('posts{id,title},posts2{id,title}');
log(stringify('posts{id,title}');
log(stringify('posts{}');

控制台日志(stringify(“”))此代码段在处理一级对象之前一直有效。若你们需要解析嵌套对象,你们必须稍微重构它

const input = 'posts{id,title},posts2{id,title}';

const parse = (input) => {
  return input
    .replaceAll('{', '[')
    .replaceAll('}', ']')
    .replaceAll('],', '] , ')
    .split(' , ')
    .reduce((_, item) => {
      const key = item.split('[')[0];
      const value = item
        .replace(`${key}[`, '')
        .replace(']', '')
        .split(',')
      return {
        ..._,
        [key]: value
      };
    }, {})
};

const parsed = parse(input);

无论如何,我不知道使用这种符号有什么好处。

输入字符串的语法是什么?至少提供几个有效(和无效)输入的示例。