0

我正在努力通过对 PHP 的深入了解来理解 jQuery。

我有一个这样的字符串:

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

我正在尝试从这个问题中获得答案。

不幸的是,我不知道如何将我的字符串变成另一个问题的提问者必须开始的东西,即:

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

你能提供的任何帮助都会很棒。我认为它与映射、关联数组、对象有关,但我就是不明白。

在此先感谢,我真的很感激!

4

1 回答 1

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 中使用此代码尝试自己编辑器。复制并粘贴此代码:

<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> 
于 2012-04-25T23:14:50.823 回答