2017-02-27 81 views
0

我知道这是一个简单的问题......但是我被堆积了。我想将包含字符串的数组数组转换为包含对象的数组数组。JavaScript:将包含字符串的数组数组转换为包含对象的数组数组

what_i_have = [ 
    [ 
    "{"point1":"recommendation number 1 text"}", 
    "{"point2":"recommendation number 2 text"}" 
    ], 
    [ 
    "{"point1":1.5}","{"ponit2":2}" 
    ], 
    [ 
    "{"point1":1.5}","{"point2":2}" 
    ] 
] 

我想要得到这样的:

what_i_want = [ 
    [ 
    {"point1":"recommendation number 1 text"}, 
    {"point2":"recommendation number 2 text"} 
    ], 
    [ 
    {"point1":1.5},{"ponit2":2} 
    ], 
    [ 
    {"point1":1.5},{"point2":2} 
    ] 
] 

我试了几种方法。数组的JSON.parse()元素的最后一种方式。但是我总是做错了一些事情。 任何建议都会受到欢迎。提前致谢!

+2

嗯,你的第一个代码是无效的。 – epascarello

+0

你可以检查你的单引号和双引号吗? –

+0

是的。道歉。 – Dubliner

回答

0

我觉得Array.prototype.map是你想要的,即

what_i_want = what_i_have.map(arr => arr.map(str => JSON.parse(str))) 

有一些问题,在您的代码示例",但忽略了map应该做你想要什么。

+0

是的。我可以在我的问题中看到初始数组。它会导致解析问题。 – Dubliner

0

使用JSON.parsemap这样的:

var result = what_i_have.map(function(subarr) { 
    return subarr.map(function(str) { 
     return JSON.parse(str); 
    }); 
}); 
0

只是遍历与JSON.parse

what_i_have = [ 
 
    [ 
 
    '{"point1":"recommendation number 1 text"}', '{"point2":"recommendation number 2 text"}' 
 
    ], 
 
    [ 
 
    '{"point1":1.5}', '{"ponit2":2}' 
 
    ], 
 
    [ 
 
    '{"point1":1.5}', '{"point2":2}' 
 
    ] 
 
] 
 
for (var i = 0; i < what_i_have.length; i++) { 
 
    var arr = what_i_have[i]; 
 
    for (var j = 0; j < arr.length; j++) { 
 
    arr[j] = JSON.parse(arr[j]); 
 
    } 
 
} 
 
console.log(what_i_have);

+0

谢谢!然而,其中一个问题是所有的“理论上”字符串我都使用双引号。所以它会导致解析问题,我想。任何建议来解决这个额外的问题? – Dubliner

+0

恩,这是不可能的,因为JavaScript不会执行,它会引发错误。您是否尝试运行代码并查看它是否运行? – epascarello

+0

JSON.parse不起作用。 – Dubliner

相关问题