按ID数组

时间:2017-07-30 05:50:51

标签: javascript arrays node.js

我有一个对象列表。在每个对象上我有一个数组。

示例:

"-KpvPH2_SDssxZ573OvM" : {
      "date" : "2017-07-25T20:21:13.572Z",
      "description" : "Test",
      "id" : [ {
        0: "0a477fed-8944-9f5d-56fd-c95fe7663a07",
        1: "0a477fed-8944-9f5d-56fd-c95fe7663a08"
      } ]
    },
    "-KpvPLSfotrZiBDeVOxU" : {
      "date" : "2017-07-25T20:21:33.159Z",
      "description" : "Test 2",
      "id" : [ {
        0: "6e79eadd-21b5-91cc-4b71-7ac1a42278b1"
      } ]
    }

如何使用ID数组作为参数搜索对象?

当我只需要过滤一个数组时,我使用过滤器,一切正常。

var result = $.grep(items, function(e){ return e.id == id; });

但在这种情况下,我认为它不起作用。

由于

1 个答案:

答案 0 :(得分:1)

由于ID在对象中稍微深一些,并且它们是对象的一部分,我认为更好的方法(与$.grep相比)将是自定义过滤器。在这里,我假设您希望在过滤时根据您的问题进行精确比较。但您也可以轻松地与indexOf进行部分比较。

var data = {
  "-KpvPH2_SDssxZ573OvM": {
    "date": "2017-07-25T20:21:13.572Z",
    "description": "Test",
    "id": [{
      0: "0a477fed-8944-9f5d-56fd-c95fe7663a07",
      1: "0a477fed-8944-9f5d-56fd-c95fe7663a08"
    }]
  },
  "-KpvPLSfotrZiBDeVOxU": {
    "date": "2017-07-25T20:21:33.159Z",
    "description": "Test 2",
    "id": [{
      0: "6e79eadd-21b5-91cc-4b71-7ac1a42278b1"
    }]
  }
};

//console.log(data);
var inputID = "0a477fed-8944-9f5d-56fd-c95fe7663a08";
var filteredData = [];

for (var prop in data) {
  if(data.hasOwnProperty(prop)) {
    var item = data[prop];
    var itemIDs = item.id[0];
    
    for(var id in itemIDs) {
      if (itemIDs[id] == inputID) {
        filteredData.push(item);
      }
    }
  }
}

console.log(filteredData);