jQuery - 如何在对象内的数组中查找特定的JavaScript对象?

时间:2014-10-22 08:04:09

标签: javascript jquery

我在javaScript中有一个对象:

var stuffObject = {
     stuffArray1 : [object1, object2, object3],
     stuffArray2 : [object4, object5, object6]
}

object1到6看起来像这样:

object1 = {
   dataStuff : {
       stuffId: "foobar"
   }
}

我的问题:给定键" foobar",如何使用jQuery从stuffObject中检索object1?关键" stuffId"总是有独特的价值。

2 个答案:

答案 0 :(得分:1)

你不会绕过集合来寻找你正在寻找的对象。 jQuery无法真正帮助它。它的目的是DOM操作。如果您想要处理对象,集合,列表等功能,请查看lodash

我写了一个函数来处理这个问题。我希望这是可以理解的。

var stuffObject = {
    stuffArray1 : [{dataStuff: {stuffId: 'foobar'}}, {dataStuff: {stuffId: 'foo'}}, {}],
    stuffArray2 : [{}, {dataStuff: {stuffId: 'bar'}}, {}]
}

function getObjByStuffId(stuffObject, stuffId) {
    var key, arr, i, obj;
    // Iterate over all the arrays in the object
    for(key in stuffObject) {
        if(stuffObject.hasOwnProperty(key)) {
            arr = stuffObject[key];
            // Iterate over all the values in the array
            for(i = 0; i < arr.length; i++) {
                obj = arr[i];
                // And if it has the value we are looking for
                if(typeof obj.dataStuff === 'object'
                   && obj.dataStuff.stuffId === stuffId) {
                    // Stop searching and return the object.
                    return obj;
                }
            }
        }
    }
}

console.log('foobar?', getObjByStuffId(stuffObject, 'foobar') );
console.log('foo?', getObjByStuffId(stuffObject, 'foo') );
console.log('bar?', getObjByStuffId(stuffObject, 'bar') );

答案 1 :(得分:0)

感谢帮助人员,使用我自己解决的其他人的输入:

getStuffById: function(id){
    for (stuffArray in stuffObject) {
            for (stuff in stuffObject[stuffArray]) {
                if (stuffObject[stuffArray][stuff].dataStuff.stuffId == id) {
                    return stuffObject[stuffArray][stuff];
                }
            }
        }
    return null;
}

这也比使用.grep()的(现已删除的)答案效果更好,因为只要找到正确的对象,此函数就会终止。

相关问题