繁体   English   中英

如何使用_.where通过ID查找嵌套在对象数组中的对象?

[英]How to use _.where to find by ID an object nested in an array of objects?

这是JSON:

tree.json:

[
  {
    "objectId": "o3mH2lo8wO",
    "name": "Coeptis",
    "thumbnailUrl": "https://storage.googleapis.com/bundle_asia_dra/portal/buildingImg/Coeptis.png",
    "createdAt": "2015-06-29T08:16:51.897Z",
    "version": 0,
    "pano": []
  },
  {
    "objectId": "ueCCX8v4Qz",
    "name": "Sunflower",
    "thumbnailUrl": "https://storage.googleapis.com/bundle_asia_dra/portal/buildingButton/caisa.png",
    "createdAt": "2015-08-25T12:11:02.235Z",
    "version": 0,
    "space": "56-139",
    "pano": [
      {
        "objectId": "TIdm6sG1r0",
        "name": "D0",
        "panoData": [

我知道如何获取第一个对象(例如"objectId": "ueCCX8v4Qz" ):

 _.where(tree, {"objectId": "ueCCX8v4Qz"})

但是我不知道如何获取例如"objectId": "TIdm6sG1r0" (位于pano:数组内部的对象)。

如何做到这一点?

可以结合使用reduce和where来遍历父元素,并在指定的属性上执行where。 就像是

 var tree = [{ "objectId": "o3mH2lo8wO", "name": "Coeptis", "thumbnailUrl": "https://storage.googleapis.com/bundle_asia_dra/portal/buildingImg/Coeptis.png", "createdAt": "2015-06-29T08:16:51.897Z", "version": 0, "pano": [] }, { "objectId": "ueCCX8v4Qz", "name": "Sunflower", "thumbnailUrl": "https://storage.googleapis.com/bundle_asia_dra/portal/buildingButton/caisa.png", "createdAt": "2015-08-25T12:11:02.235Z", "version": 0, "space": "56-139", "pano": [{ "objectId": "TIdm6sG1r0", "name": "D0", "panoData": [] }] }]; // register new function to be run on underscore _.mixin({ 'nestedWhere': function(parent, childTarget, searchOptions) { // reduce the parent with an intial state set to an empty array that we push a parent // to if a child where clause is matched return _.reduce(parent, function(memo, parentElement) { if (_.where(parentElement[childTarget], searchOptions).length > 0) { memo.push(parentElement); } return memo; }, []); } }); var data = _.nestedWhere(tree, "pano", { "objectId": "TIdm6sG1r0" }); console.log(data) 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM