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 に答える