javascript - 使用 lodash 过滤缺失的数组对象

标签 javascript underscore.js lodash

在我的 Angular 4 应用程序中,我有以下数组:

let sampleArray1 = [
  {
    "name":"Raman",
    "prdList":[
      {
        "p_code":"20",
        "crtList":[
          {
            "c_code":"087"
          }
        ]
      }
    ]
  },
  {
    "name":"Laxman",
    "prdList":[
      {
        "p_code":"10"
      }
    ]
  },
  {
    "name":"raj",
    "prdList":[
      {
        "p_code":"202"
      }
    ]
  },
  {
    "name":"raghav",
    "prdList":[
      {
        "p_code":"30",
        "crtList":[
          {
            "c_code":"97"
          }
        ]
      }
    ]
  }
]

在此数组中,某些对象缺少 crtList。我需要过滤掉所有此类对象,并且需要拥有必须且应该具有 crtList 的数组。

所以我的结果sampleArray2应该有以下结果:

 [
      {
        "name":"Raman",
        "prdList":[
          {
            "p_code":"20",
            "crtList":[
              {
                "c_code":"087"
              }
            ]
          }
        ]
      },
      {
        "name":"raghav",
        "prdList":[
          {
            "p_code":"30",
            "crtList":[
              {
                "c_code":"97"
              }
            ]
          }
        ]

} ]

如何使用 lodash 实现此目的?

最佳答案

实际上,要获取sampleArray2,您不需要lodash。一个简单的 Array.prototype.filter 就足够了:

let sampleArray1 = [
  {
    "name":"Raman",
    "prdList":[
      {
        "p_code":"20",
        "crtList":[
          {
            "c_code":"087"
          }
        ]
      }
    ]
  },
  {
    "name":"Laxman",
    "prdList":[
      {
        "p_code":"10"
      }
    ]
  },
  {
    "name":"raj",
    "prdList":[
      {
        "p_code":"202"
      }
    ]
  },
  {
    "name":"raghav",
    "prdList":[
      {
        "p_code":"30",
        "crtList":[
          {
            "c_code":"97"
          }
        ]
      }
    ]
  }
];

let result = sampleArray1.filter(function(x) {
  return hasCrtList(x.prdList);
});

function hasCrtList(prdList) {
  for (var i in prdList) {
    if (prdList[i].crtList) {
      return true;
    }
  }
  return false;
}

console.log(result);

关于javascript - 使用 lodash 过滤缺失的数组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44882754/

相关文章:

javascript - 如何在外部 Javascript 文件中使用 Firebase

javascript - 使用 Sails.js 根据参数创建必需的属性

javascript - 如何在angularjs中使用_.map使用三元运算符

html - 影响样式的下划线

javascript - 使用主干 View 在模板上动态添加 ID 和类

angular - NPM - 无法从 lodash 库中找到名称 'Many' 和命名空间 '_'

javascript - 使用lodash在深路径处创建一个空对象

javascript - 在 AngularJS 中添加 momentJS 对象时出现问题

javascript - JavaScript 中相对于绝对图像 src

javascript - 合并一组相似对象的值