【问题标题】:Filter objects array with keys array [inverse]使用键数组过滤对象数组 [逆]
【发布时间】:2016-10-19 09:56:44
【问题描述】:

我有以下键数组:

var keys = [{userId: "333"}, {userId: "334"}]

还有这个对象数组:

var users = [
{id: "333", firstName: "", lastName: "", idCard: "", birthDate: ""},
{id: "334", firstName: "", lastName: "", idCard: "", birthDate: ""},
{id: "335", firstName: "", lastName: "", idCard: "", birthDate: ""},
{id: "336", firstName: "", lastName: "", idCard: "", birthDate: ""}
]

我需要通过使用我的keys Array[逆结果] 过滤来更改我的users Array

想不通,得到所有的答案! (js, jquery, 角度)

有人吗?

【问题讨论】:

    标签: javascript jquery angularjs arrays


    【解决方案1】:

    您可以使用filter()find()

    var users = [
    {id: "333", firstName: "", lastName: "", idCard: "", birthDate: ""},
    {id: "334", firstName: "", lastName: "", idCard: "", birthDate: ""},
    {id: "335", firstName: "", lastName: "", idCard: "", birthDate: ""},
    {id: "336", firstName: "", lastName: "", idCard: "", birthDate: ""}
    ]
    var keys = [{userId: "333"}, {userId: "334"}]
    
    var result = users.filter(function(o) {
      return !keys.find(function(e) {
        return e.userId == o.id
      })
    })
    
    console.log(result)

    【讨论】:

      【解决方案2】:

      您可以拥有一组ids,然后您可以在此列表中检查可用性

      var users = [
      {id: "333", firstName: "", lastName: "", idCard: "", birthDate: ""},
      {id: "334", firstName: "", lastName: "", idCard: "", birthDate: ""},
      {id: "335", firstName: "", lastName: "", idCard: "", birthDate: ""},
      {id: "336", firstName: "", lastName: "", idCard: "", birthDate: ""}
      ]
      
      var keys = [{userId: "333"}, {userId: "334"}]
      
      var idList = keys.map(function(x){ return x.userId});
      var r = users.filter(function(x){
        return idList.indexOf(x.id) < 0
      })
      
      console.log(r)

      【讨论】:

      • 抱歉,我需要逆向结果。
      • @ZeevKatz 所以除了提到的列表之外应该都是。正确的?如果是,请查看更新
      【解决方案3】:

      您可以使用哈希表进行过滤。

      var keys = [{ userId: "333" }, { userId: "334" }],
          users = [{ id: "333", firstName: "", lastName: "", idCard: "", birthDate: "" }, { id: "334", firstName: "", lastName: "", idCard: "", birthDate: "" }, { id: "335", firstName: "", lastName: "", idCard: "", birthDate: "" }, { id: "336", firstName: "", lastName: "", idCard: "", birthDate: "" }],
          filtered = users.filter(function (a) {
              return !this[a.id];
          }, keys.reduce(function (r, a) {
              r[a.userId] = true;
              return r;
          }, Object.create(null)));
      
      console.log(filtered);
      .as-console-wrapper { max-height: 100% !important; top: 0; }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-29
        • 1970-01-01
        • 1970-01-01
        • 2023-01-02
        • 1970-01-01
        相关资源
        最近更新 更多