Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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 从包含多维数据的字符串构建JSON对象_Javascript_Json_Multidimensional Array - Fatal编程技术网

Javascript 从包含多维数据的字符串构建JSON对象

Javascript 从包含多维数据的字符串构建JSON对象,javascript,json,multidimensional-array,Javascript,Json,Multidimensional Array,我有一个名称/值对象数组(如下)。名称的格式设置为表示多维数组 我需要用它构建一个完整的JavaScript对象(底部) 变成这样: {getQuote : { origin : Omaha}, { destination : 10005}, {vehicles : [ { year : 1989, make: Honda, model : accord }, { //etc }] var source = [ /* Your so

我有一个名称/值对象数组(如下)。名称的格式设置为表示多维数组

我需要用它构建一个完整的JavaScript对象(底部)

变成这样:

{getQuote : 
  { origin : Omaha},
  { destination : 10005},
  {vehicles : [
   {
    year : 1989,
    make: Honda,
    model : accord
   },
   {
   //etc
}]
var source = [ /* Your source array here */ ];
var dest = {};

for(var i = 0; i < source.length; i++)
{
    var value = source[i].value;

    var path = source[i].name.split(/[\[\]]+/);

    var curItem = dest;

    for(var j = 0; j < path.length - 2; j++)
    {
        if(!(path[j] in curItem))
        {
            curItem[path[j]] = {};
        }

        curItem = curItem[path[j]];
    }

    curItem[path[j]] = value;
}

n

您可以手动执行,如下所示:

{getQuote : 
  { origin : Omaha},
  { destination : 10005},
  {vehicles : [
   {
    year : 1989,
    make: Honda,
    model : accord
   },
   {
   //etc
}]
var source = [ /* Your source array here */ ];
var dest = {};

for(var i = 0; i < source.length; i++)
{
    var value = source[i].value;

    var path = source[i].name.split(/[\[\]]+/);

    var curItem = dest;

    for(var j = 0; j < path.length - 2; j++)
    {
        if(!(path[j] in curItem))
        {
            curItem[path[j]] = {};
        }

        curItem = curItem[path[j]];
    }

    curItem[path[j]] = value;
}
var source=[/*您的源数组在这里*/];
var dest={};
对于(变量i=0;i
dest
是结果对象


检查它是否在这里工作:

您很可能只需要“对象”。添加了说明,谢谢您,Oleg。好吧,按[]个块分割它并按需自动激活对象似乎并不难。唯一棘手的部分是在只使用数字索引的级别上激活数组对象。@OlegV.Volkov,这就是问题所在!这似乎并不难,但试着解决它,它肯定会吃掉你的大脑。我试图解决它,因为过去15分钟以上,甚至不接近解决方案!要分解这些内容,我将执行以下操作:
strAry=myArray[I].replace(/\]/g,”).split(“[”)
但这只是谜题的一部分。太好了!又短又漂亮!嗯,一些我以前没见过的新东西,谢谢。我的解决方案远没有这么优雅。谢达尔,这是给你的金星。这并没有像应该的那样为数字独立创建数组。我想你可以很容易地解决这个问题。