2015-10-21 5 views
5

द्वारा ऑब्जेक्ट ढूंढना चाहता हूं हाय यहाँ एपीआई प्रतिक्रिया से प्राप्त ऑब्जेक्ट की एक सरणी है और मैं angular.js और जावास्क्रिप्ट का उपयोग कर रहा हूं और मैं आईडी और आईडी द्वारा ढूंढने के साथ ऑब्जेक्ट प्राप्त करना चाहता हूं "1_1_1" .is यह संभव है? मैं उस पर फंस गया हूँ। कृपया मदद करे।मुझे एपीआई प्रतिक्रिया में ऑब्जेक्ट की एक सरणी मिल रही है और नेस्टेड सरणी है। मैं आईडी

[ 
     { 
     "text": "folder 1", 
     "parent": { 
      "id": "1", 
      "name": "folder 1" 
     }, 
     "children": [ 
      { 
      "text": "folder 1_1", 
      "parent": { 
       "id": "1_1", 
       "name": "folder 1_1" 
      }, 
      "children": [ 
       { 
       "text": "folder 1_1_1", 
       "parent": { 
        "id": "1_1_1", 
        "name": "folder 1_1_1" 
       }, 
       "children": [] 
       }, 
       { 
       "text": "folder 1_1_2", 
       "parent": { 
        "id": "1_1_2", 
        "name": "folder 1_1_2" 
       }, 
       "children": [] 
       } 
      ] 
      }, 
      { 
      "text": "folder 1_2", 
      "parent": { 
       "id": "1_2", 
       "name": "folder 1_2" 
      }, 
      "children": [ 
       { 
       "text": "folder 1_2_1", 
       "parent": { 
        "id": "1_2_1", 
        "name": "folder 1_2_1" 
       }, 
       "children": [] 
       } 
      ] 
      } 
     ] 
     }, 
     { 
     "text": "folder 2", 
     "parent": { 
      "id": "2", 
      "name": "folder 2" 
     }, 
     "children": [ 
      { 
      "text" : "folder 2_1", 
      "parent": { 
       "id": "2_1", 
       "name": "folder 2_1" 
      }, 
      "children": [] 
      }, 
      { 
      "text" : "folder 2_2", 
      "parent": { 
       "id": "2_2", 
       "name": "folder 2_2" 
      }, 
      "children": [] 
      }, 
      { 
      "text" : "folder 2_3", 
      "parent": { 
       "id": "2_3", 
       "name": "folder 2_3" 
      }, 
      "children": [ 
       { 
       "text" : "folder 2_3_1", 
       "parent": { 
        "id": "2_3_1", 
        "name": "folder 2_3_1" 
       }, 
       "children": [] 
       } 
      ] 
      }, 
     ] 
     }, 
     { 
     "text": "folder 3", 
     "parent": { 
     "id": "3", 
     "name": "folder 3" 
     }, 
     "children": [] 
    } 
    ] 

उत्तर

0

ऐसा करने के लिए जावास्क्रिप्ट या कोणीय में कोई भी फ़ंक्शन नहीं है।

function findById(id, items) { 
    for (var i = 0; i < items.length; i++) { 
    if (items[i].id === id) { 
     return items[i]; 
    } 

    var result = findById(id, items[i].children); 
    if (result !== null) { 
     return result; 
    } 
    } 
    return null; 
} 
1

इस प्रयास करें::

function isMatch(element, criteria) { 
    var parent = null; 
    if (typeof element.parent !== 'undefined') { 
     parent = element.parent; 
     if (typeof parent.id !== 'undefined') { 
      return (parent.id === criteria); 
     } 
    } 
    return false; 
} 

function findById (tree, criteria) { 

    for (var i = 0; i < tree.length; i = i + 1) { 
     var obj = tree[i]; 
     if (isMatch(obj, criteria)) { 
      return obj; 
     }; 

     if (typeof obj.children !== 'undefined') { 
      var foundElement = findById(obj.children, criteria); 
      if (foundElement != null) { 
       return foundElement; 
      } 
     } 
    } 

    return null; 
} 
+0

सबसे अच्छा समाधान के लिए अच्छा जवाब धन्यवाद

हालांकि यह एक समस्या यह है कि काफी आसानी से प्रत्यावर्तन के साथ हल किया जा सकता है। –

संबंधित मुद्दे