繁体   English   中英

在JavaScript或Lodash中是否有一个包含多个值的includes()?

[英]Is there a one liner in JavaScript or Lodash for includes() with multiple values?

在我的程序中,我经常验证对象。 该验证通常包括检查对象是否具有所有已定义的键。 是否有一个单行(短路,最好是单个函数调用)来检查使用纯JavaScript还是Lodash(我也在使用)?

到目前为止,我在下面的代码中这样做。 我正在寻找一种更简洁的方式。

function validator(object) {
  let requiredKeys = ['key1', 'key2', 'key3'];
  for (let requiredKey of requiredKeys) {
    if (!object.hasOwnProperty(requiredKey)) {
      return false;
    }
  }
  return true;
}

validator({ key1: 1, key2: 2, key3: 3 });  // returns true
validator({ key1: 1, key2: 2 });           // returns false

注1:我可以在objectobject.keys() ,因此单行函数可以使用ObjectArray

注2: Array上有includes()方法,但它只需要一个参数。 我正在寻找一个需要多个版本的版本。

您可以使用Array#everythisArg检查对象。

 function check(object) { return ['key1', 'key2', 'key3'].every({}.hasOwnProperty, object); } console.log(check({})); console.log(check({ key1: 1 })); console.log(check({ key1: 1, key2: 2 })); console.log(check({ key1: 1, key3: 3 })); console.log(check({ key1: 0, key2: 0, key3: 0 })); 

没有thisArg

 function check(object) { return ['key1', 'key2', 'key3'].every({}.hasOwnProperty.bind(object)); } console.log(check({})); console.log(check({ key1: 1 })); console.log(check({ key1: 1, key2: 2 })); console.log(check({ key1: 1, key3: 3 })); console.log(check({ key1: 0, key2: 0, key3: 0 })); 

暂无
暂无

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

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