使用Underscore.js过滤具有条件的对象

filter an object with condition using Underscore.js

本文关键字:有条件 对象 过滤 Underscore js 使用      更新时间:2023-09-26

我在应用程序中使用Underscore.js库。我有一个对象

{a:"1", b:"2", c: "3", d:"no", e: "no"}

我想把这个对象压缩为只有不具有"no"属性的属性,这将导致下面的对象

    {a:"1", b:"2", c: "3"}

在Uderscore.js中,我使用了以下代码

_.omit(obj, 'attr');

但在上面的代码中,我需要一个函数来输出包含no值的键,而不是"attr"。有更好的方法吗。请告诉我如何获取具有"no"值的密钥。

您可以将_.omit用作

var obj = {a:"1", b:"2", c: "3", d:"no", e: "no"};
// _.omit returns a copy of the object
obj = _.omit(obj, function(value, key, object) {
  return (value == "no");
});
console.log(obj);

Undercore的_.omit()也接受"谓词",这是他们对类似于_.filter()的函数的术语:

var o = {a:"1", b:"2", c: "3", d:"no", e: "no"}
console.log(_.omit(o, function(v){
  return v === 'no';
}));
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>