0

如果"id":"236"存在于spConfig['attributs'][125]['options']获取其中包含的数组。

你会如何在 jQuery 中做到这一点?

var spConfig = {
    "attributes": {
        "125": {
            "id": "125",
            "code": "pos_colours",
            "label": "Colour",
            "options": [{
                "id": "236",
                "label": "Dazzling Blue",
                "price": "0",
                "oldPrice": "0",
                "products": ["11148"]
            }, {
                "id": "305",
                "label": "Vintage Brown",
                "price": "0",
                "oldPrice": "0",
                "products": ["11786", "11787", "11788", "11789", "11790", "11791", "11792", "11793"]
            }]
        }

    }
4

3 回答 3

1

http://api.jquery.com/jQuery.inArray/

if ($.inArray('yourmom', myArray) !== -1) ...
于 2012-08-03T03:46:15.793 回答
1

演示

function findMe(searchTerm, location) {
    for ( var i = 0; i < location.length; i++ ) {
        if(location[i]['id'] == searchTerm) {
            return location[i];        
        }
    }
    return null;
}

var searchTerm = '236';
var location = spConfig['attributes']['125']['options'];

var requiredObject = findMe( searchTerm, location );
​alert( requiredObject ? requiredObject['label'] : 'Not Found');​​​​​​
于 2012-08-03T03:59:29.033 回答
1

您的数据结构稍微复杂,但假设options.ids 是唯一的,您可以使用

function foo(arg) {
    var filtered;
    $.each(spConfig.attributes, function() {
        filtered = $(this.options).filter(function() {
            return this.id == arg;
        });
    });
    return (filtered.length) ? filtered[0].products : [];
}

小提琴

传递不存在的键时返回空数组的函数。

此外,如果您有多个attribute属性(除了125)并且想要迭代它们:

function foo(arg) {
    var filtered=[];
    $.each(spConfig.attributes, function() {
        filtered.push($(this.options).filter(function() {
            return this.id == arg;
        }));
    });
    filtered = $(filtered).filter(function() {
        return this.length;
    });
    return (filtered.length) ? filtered[0][0].products : [];
}

小提琴

或者,如果您总是访问该属性attribute[125],您不妨将其保留为简单的硬编码:

function foo(arg) {
    var filtered = $(spConfig.attributes[125].options).filter(function() {
        return this.id == arg;
    });
    return (filtered.length) ? filtered[0].products : [];
}

小提琴

如果您需要更多自定义,或者传递attribute属性名称。

function foo(arg, attr) {
    var filtered = $(spConfig.attributes[attr].options).filter(function() {
        return this.id == arg;
    });
    return (filtered.length) ? filtered[0].products : [];
}

小提琴

于 2012-08-03T04:12:48.487 回答