使用对角线或下划线检查对象是否只有给定键 [英] Check if object has only the given keys using Lodash or Underscore

查看:40
本文介绍了使用对角线或下划线检查对象是否只有给定键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否有对角线或下划线方法可以确定对象是否只具有该对象的给定键。我希望使用Lodash或下划线实现,即使使用本机JS这听起来微不足道。

例如,如果我的对象如下所示,并且假设有一个名为hasOnly的lodash方法

const obj = {
    name: undefined,
  age: 15,
  school: 'Some school'
}

_.hasOnly(obj,['name','age']) //return false

_.hasOnly(obj,['name','age','city']) //return false

_.hasOnly(obj,['name','age','school']) //return true

我似乎在文档中找不到方法

推荐答案

快速下流:

hasOnly = (obj, props) => _.isEqual(_.keys(obj).sort(), props.sort())

之所以进行排序,是因为我们正在比较数组。

作为另一种选择,可以将props_.keys(obj)都转换为对象,其中props_.keys(obj)是键,而值是始终相同的虚拟值,例如1。执行此操作的函数可能如下所示:

make1ValuedObj = keys => _.zipObject(keys, Array(keys.length).fill(1))

然后,用户可以将这些内容传递给_.isEqual,而无需对任何内容进行排序:

hasOnly = (obj, props) => _.isEqual(make1ValuedObj(_.keys(obj)), make1ValuedObj(props))

实际情况是,在构造对象时必须进行一种&q;排序,因此我认为与上面的解决方案相比没有什么真正的优势。

这篇关于使用对角线或下划线检查对象是否只有给定键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆