javascript – lodash / underscore检查一个对象是否包含来自另一个对象的所有键/值

这可能是一个简单的问题,但我无法从lodash api文档和Google中找到答案.

我们假设我有一个像这样的对象:

var obj = {
  code: 2,persistence: true
}

我想要一个函数,我可以传递一个键/值对,如果键存在于我的对象中并且具有指定的值,则返回true:

_.XXXX(obj,{code: 2});  //true
_.XXXX(obj,{code: 3});  //false
_.XXXX(obj,{code: 2,persistence: false});  //false
_.XXXX(obj,persistence: true});   //true

这有点像where()但只有一个对象.

解决方法

您可以使用 matcher
var result1 = _.matcher({ code: 2 })( obj );  // returns true
var result2 = _.matcher({ code: 3 })( obj );  // returns false

用mixin:

_.mixin( { keyvaluematch: function(obj,test){
    return _.matcher(test)(obj);
}});

var result1 = _.keyvaluematch(obj,{ code: 2 });  // returns true
var result2 = _.keyvaluematch(obj,{ code: 3 });  // returns false

编辑

下划线1.8版添加_.isMatch功能.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...