JS - Lodash工具库的使用详解15(深比较,判断是否包含某属性或属性值)

作者: hgweb 发布时间: 2019-10-15 浏览: 862 次 编辑

十五、深比较,判断是否包含某属性或属性值

1,两个对象进行深比较

(1)isEqual 方法可以执行深比较来确定两者的值是否相等。

该方法支持比较 arrays, array buffers, booleans, date objects, error objects, maps, numbers, Object objects, regexes, sets, strings, symbols, 以及 typed arrays. Object 对象值比较自身的属性。

  • 注意:比较时不包括继承的和可枚举的属性。 且不支持函数和 DOM 节点比较。
var object = { 'a': 1 };
var other = { 'a': 1 };
   
console.log(_.isEqual(object, other));   // => true
   
console.log(object === other);   // => false

原文:JS - Lodash工具库的使用详解15(深比较,判断是否包含某属性或属性值)


(2)isEqualWith 方法类似 isEqual。 除了它接受一个 customizer 用来定制比较值。 如果 customizer 返回 undefined 将会比较处理方法代替。
function isGreeting(value) {
  return /^h(?:i|ello)$/.test(value);
}
  
function customizer(objValue, othValue) {
  if (isGreeting(objValue) && isGreeting(othValue)) {
    return true;
  }
}
  
var array = ['hello', 'goodbye'];
var other = ['hi', 'goodbye'];
  
_.isEqualWith(array, other, customizer);   // => true

2,判断是否包含某属性值

(1)isMatch 方法可以执行一个深度比较,来确定 object 是否含有和 source 完全相等的属性值。

var object = { 'a': 1, 'b': 2 };
  
_.isMatch(object, { 'b': 2 });   // => true
  
_.isMatch(object, { 'b': 1 });   // => false

(2)isMatchWith 方法类似 isMatch。 除了它接受一个 customizer 定制比较的值。 如果 customizer 返回 undefined 将会比较处理方法代替。

function isGreeting(value) {
  return /^h(?:i|ello)$/.test(value);
}
  
function customizer(objValue, srcValue) {
  if (isGreeting(objValue) && isGreeting(srcValue)) {
    return true;
  }
}
  
var object = { 'greeting': 'hello' };
var source = { 'greeting': 'hi' };
  
_.isMatchWith(object, source, customizer);   // => true

3,判断是否是该对象的属性

(1)has 方法可以检查某 path 路径是否是一个 object 对象的直接属性。

var object = { 'a': { 'b': 2 } };
var other = _.create({ 'a': _.create({ 'b': 2 }) });
  
_.has(object, 'a');   // => true
  
_.has(object, 'a.b');   // => true
  
_.has(object, ['a', 'b']);   // => true
  
_.has(other, 'a');   // => false

(2)hasIn 方法可以检查某 path 路径是否是一个 object 对象的直接属性或继承属性。

var object = _.create({ 'a': _.create({ 'b': 2 }) });
  
_.hasIn(object, 'a');   // => true
  
_.hasIn(object, 'a.b');   // => true
  
_.hasIn(object, ['a', 'b']);   // => true
  
_.hasIn(object, 'b');   // => false 

JS Lodash工具库的使用详解系列:

JS - Lodash工具库的使用详解1(使用debounce函数实现防抖)

JS - Lodash工具库的使用详解2(使用throttle函数实现节流)

JS - Lodash工具库的使用详解3(String字符串操作函数)

JS - Lodash工具库的使用详解4(Array数组函数1:查找指定元素、或索引)

JS - Lodash工具库的使用详解5(Array数组函数2:获取部分数组片段)

JS - Lodash工具库的使用详解6(Array数组函数3:移除、修改原数组内容)

JS - Lodash工具库的使用详解7(Array数组函数4:数组排序、打乱)

JS - Lodash工具库的使用详解8(Array数组函数5:数组与对象间的转换)

JS - Lodash工具库的使用详解9(Array数组函数6:如果不是数组强制转成数组)

JS - Lodash工具库的使用详解10(Array数组函数7:根据指定规则进行分组、统计)

JS - Lodash工具库的使用详解11(Array数组函数8:创建指定范围数字的数组)

JS - Lodash工具库的使用详解12(创建一个只能调用1次、n次的函数)

JS - Lodash工具库的使用详解13(创建一个对某函数结果取反的函数)

JS - Lodash工具库的使用详解14(浅拷贝,深拷贝)

JS - Lodash工具库的使用详解15(深比较,判断是否包含某属性或属性值)

JS - Lodash工具库的使用详解16(判断是否为空)

JS - Lodash工具库的使用详解17(类型检查)

JS - Lodash工具库的使用详解18(生成随机数)


原文出自:www.hangge.com 转载请保留原文链接:https://www.hangge.com/blog/cache/detail_2579.html