2016-09-30 92 views
0

以下是一种伪代码(从实际代码的简化,可能无法编译)如何在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"} 
     ]       
     } 
    ] 
} 
]; 

要找到一个子项,我们做这个

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

现在很多问题是,如何寻找一个subSubItem按名字?

回答

0

我搜索subSubItem就像你如何搜索的子项

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>

相关问题