次のようにフォーマットされた JSON データがあります。
{
"id": "ABC123",
"offerPrice": 42.00,
"regularPrice": 42.00,
"variations": [{
"key": "Style",
"value": "Black"
}, {
"key": "Personalization",
"value": "2 Lines of Personalization"
}]
}, {
"id": "987ZYX",
"offerPrice": 52.00,
"regularPrice": 52.00,
"variations": [{
"key": "Style",
"value": "Black"
}, {
"key": "Personalization",
"value": "3 Lines of Personalization"
}]
}
私がする必要があるのは、「バリエーション」配列内の値を照会し、一致が見つかった場合はオブジェクトを返すことです。
値の「最初のレベル」を問題なく照会できます。
var results = jQuery.grep(obj, function (element, index) {
return element.offerPrice == "42.00";
});
インデックス値を指定すると、バリエーションを照会できます (これは明らかにしたくありません)。
var results = jQuery.grep(obj, function (element, index) {
return element.variations[1].key == "Personalization" && element.variations[1].value == "2 Lines of Personalization";
});
これは理想的には私がやりたいことですが、うまくいきません:
var results = jQuery.grep(obj.variations, function (element, index) {
return element.key == "Personalization" && element.value == "2 Lines of Personalization";
});
私は得続けます:
Uncaught TypeError: Cannot read property 'length' of undefined
ここに jsFiddle があります: http://jsfiddle.net/VzqWW/3/
何か案は?