2016-09-30 1 views
0

Suite est une sorte de pseudo-code (simplifié à partir du code réel, ne peut compiler)Comment trouver un élément dans un tableau à deux dimensions dans underscore.js?

$scope.items = [ 
{ 
    name: "Item1", 
    subItems: [ 
     {name: "SubItem1"}, 
     {name: "SubItem2"} 
    ] 
}, 
{ 
    name: "Item2", 
    subItems: [ 
     {name: "SubItem3"}, 
     {name: "SubItem4"}, 
     {name: "SubItem5"} 
    ] 
}, 
{ 
    name: "Item3", 
    subItems: [ 
     {name: "SubItem6", 
     subSubItems: [ 
      {name: "SubItem6-1"}, 
      {name: "SubItem6-2"} 
     ]       
     } 
    ] 
} 
]; 

Pour trouver un sous-élément, nous le faisons

function(subItem) { 
       scope.currentItem = _.find(scope.subItems, function(sm){ 
        return subItem.name === sm.name; 
       }); 
} 

Maintenant, beaucoup question est, comment rechercher un subSubItem de nom?

Répondre

0

Je cherche le subSubItem comme la façon dont vous avez cherché pour le sous-élément

items = [{ 
 
    name: "Item1", 
 
    subItems: [{ 
 
    name: "SubItem1" 
 
    }, { 
 
    name: "SubItem2" 
 
    }] 
 
}, { 
 
    name: "Item2", 
 
    subItems: [{ 
 
    name: "SubItem3" 
 
    }, { 
 
    name: "SubItem4" 
 
    }, { 
 
    name: "SubItem5" 
 
    }] 
 
}, { 
 
    name: "Item3", 
 
    subItems: [{ 
 
    name: "SubItem6", 
 
    subSubItems: [{ 
 
     name: "SubItem6-1" 
 
    }, { 
 
     name: "SubItem6-2" 
 
    }] 
 
    }] 
 
}]; 
 

 
var findSubItem = function(subItemName, subSubItemName, subItems) { 
 
    var subItem = _.find(subItems, function(subItm) { 
 
    return subItm.name === subItemName; 
 
    }); 
 
    var subSubItem = _.find(subItem.subSubItems, function(itm) { 
 
    return itm.name === subSubItemName; 
 
    }); 
 
    return subSubItem 
 
} 
 

 
var sampleSubItems = [{ 
 
    name: "SubItem6", 
 
    subSubItems: [{ 
 
    name: "SubItem6-1" 
 
    }, { 
 
    name: "SubItem6-2" 
 
    }] 
 
}] 
 

 
setTimeout(function() { 
 
    var res = findSubItem("SubItem6", "SubItem6-1", sampleSubItems); 
 
    $("#result").html(JSON.stringify(res)); 
 
}, 0);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="result"></div>