2

JSON データでオブジェクトの属性を検索しようとしています。

uncaught type error:length is not definedしかし、jQueryのようにエラーが発生しています。私のJSONは次のようになります。

var list = {
    meta: {
        limit: 1000,
        offset: 0,
        previous: null,
        total_count: 1797
    },
    objects: [{
        id: 1215,
        location: {
            id: 1306,
            name: "Austin",
            parent_id: 43,
            type: "City",
        },
        name: "2ND Street District",
    }]
};

$.each(list.objects.location, function (i, v) {
    if (v.id.search(new RegExp(/1036/i)) != -1) {
        alert(v.name);
        return;
    }
});

この問題に関するアイデアを教えてください。

4

4 に答える 4

1

コードに 2 つのエラーがあります。まず、配列を反復処理していません。配列 istlist.objectsではありませんlist.objects.location(これがエラーが発生する理由ですlength is not defined)。$.each()したがって、呼び出しを次のように変更する必要があります。

$.each(list.objects, function(i, v) {

v.location.idを使用して、現在のオブジェクトの ID にアクセスできるようになりました。彼女は次の問題を抱えています: それは整数であり、関数を持っていないsearch()ので、式で直接使用.test()し、テストの前に整数を必要な文字列に変換し、結果をブール値として返します。ここが必要です。

  if ( /1306/.test(v.location.id) ) {
    alert(v.name);
  }
});

動作中のjsfiddleを見る

于 2013-10-08T09:03:25.073 に答える
0

実際には3つの間違い..jsonデータに2つの間違いがあります(問題ではありませんが、それでも)

 type: "City",
},
name: "2ND Street District",

する必要があります

 type: "City"
},
name: "2ND Street District"

そして変更

$.each(list.objects.location, function(i, v) 
{
  if (v.id.search(new RegExp(/1036/i)) != -1) 
   {
    alert(v.name);
        return;
    }
});

$.each(list.objects, function (i, v) {
            if (v.location.id.toString().search(new RegExp(/1036/i)) != -1) {
                alert(v.location.name);
                return;
            }
        });

したがって、完全なコードは次のとおりです。

 var list = {
            meta: {
                limit: 1000,
                offset: 0,
                previous: null,
                total_count: 1797
            },
            objects: [
                {
                    id: 1215,
                    location: {
                        id: 1306,
                        name: "Austin",
                        parent_id: 43,
                        type: "City"
                    },
                    name: "2ND Street District"
                }
                ]
        };

        $.each(list.objects, function (i, v) {

            if (v.location.id.toString().search(new RegExp(/1036/i)) != -1) {
                alert(v.location.name);
                return;
            }
        });

そして、これが実際のデモです

于 2013-10-08T09:07:06.873 に答える
0

こんにちは、このフィドルはjsonのオブジェクトの場所にあるすべてのデータを表示します..http : //jsbin.com/AZAhaWo/3/editをチェックしてください

$.each(list.objects[0].location, function(i, v) 
    {

       alert(v);

    }
    });
于 2013-10-08T09:04:17.537 に答える