如何在 underscore.js 的二维数组中查找元素?
How to find element in 2-dimensional array in 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
?
我会像您搜索子项一样搜索子项
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>
以下是一种伪代码(由真实代码简化而来,可能无法编译)
$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
?
我会像您搜索子项一样搜索子项
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>