在JQuery中从String创建数组映射

时间:2012-04-25 22:14:13

标签: javascript jquery map

我正在努力了解jQuery,并且非常了解PHP。

我有一个像这样的字符串:

[donor="company1" web="http://company1.com" amount="5.50"];[donor="company2" web="http://company2.com" amount="40.00"]

我正在尝试从question获得答案结果。

不幸的是,我不知道如何将我的字符串变成类似于另一个问题的提问者的内容,即:

var data = [{'donor':'company1', 'web':'http://company1.com', 'amount':5.50}, 
            {'donor':'company2', 'web':'http://company2.com', 'amount':40.00}]

您可以提供任何帮助都很棒。我认为它与地图,关联数组,对象有关,但我只是没有得到它。

提前致谢,我真的很感激!

1 个答案:

答案 0 :(得分:0)

您可以使用regex replacemnt将原始字符串转换为所需的字符串:

var s='[donor="company1" web="http://company1.com" amount="5.50"];[donor="company2" web="http://company2.com" amount="40.00"]';
s='[' + s.replace(/\[/g,'{').replace(/\]/g,'}').replace(/=/g,':')
  .replace(/"\s/g,'", ').replace(/{(.+?):/g,'{"$1":')
  .replace(/;/g,',\r\n') + ']';

此转换的结果是您要获取的字符串,它是对象数组的JSON表示法。

如果您评估此JSON表达式,则会获得对象数组。

如果将这些行添加到上一个脚本的末尾,您将看到长度为2的数组,其中包含JSON表示的对象:

var t = eval(s);
alert(t.length); // output 2, which is the array length
alert(t[0].donor); // outputs company1, which is the donor of the first object in the array

您可以在w3schools try it yourself editor中使用此代码。复制并粘贴此代码:

<html>
<head>
<script type="text/javascript">
var s='[donor="company1" web="http://company1.com" amount="5.50"];[donor="company2" web="http://company2.com" amount="40.00"]';
s='[' + s.replace(/\[/g,'{').replace(/\]/g,'}').replace(/=/g,':')
  .replace(/"\s/g,'", ').replace(/{(.+?):/g,'{"$1":')
  .replace(/;/g,',\r\n') + ']';
var t = eval(s);
alert("Array length: " + t.length);
alert("1st object donor: " + t[0].donor);
</script>
</head>
<body>


</body>
</html>