0

我有一个 JSON 数据

[
    {
        "Name": "Tom",
        "Email": "tom@gmail.com",
        "Notes": "Yea, it's good",
        "Ratings": "5",
        "Messages": [
            "Tom - I am good",
            "System - How're you doing?",
            "Tom - True, that!",
            "System - Oh Yes! ;) "
        ]
    },
    {
        "Name": "Sunny",
        "Email": "sunny@gmail.com",
        "Notes": "Yea, it's good",
        "Ratings": "2",
        "Messages": [
            "Sunny-I am good",
            "System - How're you doing?",
            "Sunny - True, that!",
            "System - Oh Yes! ;) "
        ]
    }
]

我正在使用 jQuery 解析它并像这样迭代它;

            var jsonData = $("#jsonData").val();
            var plainData = $.parseJSON(jsonData);

            for (var j = 0; j < plainData.length; j++) {
                var Name = plainData[j].Name;
                var Email = plainData[j].Email;
                var Notes = plainData[j].Notes;
                var Ratings = plainData[j].Ratings;

                var Messages = plainData[j].Messages;
                var _messages = " ";
                for (var i = 0; i < Messages.length; i++)
                    _messages += Messages[i] + "\n";

            }

我不太确定在 for 循环中迭代它是否是一个好主意。谁能建议我一种更好/优化的方法来迭代解析的 json 值?

4

2 回答 2

2

你刚才做的方式是最有效的方式,除了:

var Messages = plainData[j].Messages;
var _messages = " ";
for (var i = 0; i < Messages.length; i++)
    _messages += Messages[i] + "\n";

也可以写得更好:

_messages = plainData[j].Messages.join('\n') + '\n';
于 2012-05-07T11:03:16.487 回答
1

在较旧的浏览器(以及一些不太旧的浏览器)中,如果可以使用负 while 循环,它将比 for 循环更快:

代替

for (var j = 0; j < plainData.length; j++) { 

利用

var j=plainData.length;
while(j--) {

曾经有一个博客引用了一些定量指标,但是那个页面已经死了,但是结果可以很容易地复制。

关于为什么是比较等于零而不是大于或小于比较的推测​​,以及作为解释语言的 Javascript 可以内联代码以使用已知的术语点进行优化,但我没有定量知识在这个声明上。

在网络房间里转了一圈后,我发现了一些量化:

https://blogs.oracle.com/greimer/entry/best_way_to_code_a

于 2012-05-07T12:15:42.470 回答