如何在 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>