2014-10-22 120 views
0

我有一个对象在JavaScript:jQuery - 如何在对象内的数组内找到特定的JavaScript对象?

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

object1到6这个样子的:

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

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

回答

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()的(现已删除)回答更好,因为这个函数一找到正确的对象就立即终止。

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')); 
相关问题