有几个类似的问题,但没有一个涵盖字符串看起来像some-name[][some-key]的情况。我尝试过JSON.parse('some-name[][some-key]');,但它不能解析它。
有没有办法将这样的字符串转换成类似于{ 'some-name': { 0: { 'some-key': '' } } }的JavaScript对象
这是表单域的名称。它通常由PHP解析,但我想用JavaScript以同样的方式解析它。基本上我有<input name="some-name[][some-key]">,我想把它转换成var something = { 'some-name': { 0: { 'some-key': VALUE-OF-THIS-FIELD } } }。
发布于 2014-02-19 22:37:29
编辑:根据你更新的例子,你可以做这样的事情(见下图)。这是可行的--但只适用于当前的示例。
var convertor = function(element) {
var elementName = element.getAttribute('name');
var inpIndex = elementName.substring(0, elementName.indexOf('[')),
keyIndex = elementName.substring(elementName.lastIndexOf('[') + 1, elementName.lastIndexOf(']'));
var strToObj = "var x = {'" + inpIndex + "': [{'" + keyIndex + "': '" + element.value + "'}]}";
eval(strToObj);
return x;
};
var myObject = convertor(document.getElementById('yourInputID'));示例如下: http://paulrad.com/stackoverflow/string-to-array-object.html (结果在console.log中可见)
旧响应
使用eval..但是您的字符串必须具有有效的 javascript语法
所以:
var str = "arr[][123] = 'toto'";
eval(str);
console.log(arr);将返回语法错误
有效语法为:
var str = "var arr = []; arr[123] = 'toto'";
var x = eval(str);
console.log(arr);https://stackoverflow.com/questions/21883390
复制相似问题