Lodash - 检查对象是否包含数组中的任何键



所以我有一个对象和数组。我想检查对象是否包含数组中的任何键。像这样:

对象:

const user = {
    firstname: 'bob',
    lastname: 'boblastname'
    email: 'bob@example.com'
}

阵 列:

const lastname = ['lastname'];
const userDetails = ['firstname', 'email'];

因此,在检查密钥是否存在时,它应该返回 true。例:

_.includesKey(user, lastname) // true
_.includesKey(user, userDetails ) // true
我知道

这个问题是关于 lodash 的,但我总是想知道你为什么要使用第三方库来执行一个相当微不足道的任务

使用基本js工具解决问题的一种方法可能是

const user = {
    firstname: 'bob',
    lastname: 'boblastname',
    email: 'bob@example.com'
}
const lastname = ['lastname'];
const userDetails = ['firstname', 'email'];
const hasLastName = lastname.every(prop => prop in user)
const hasDetails = userDetails.every(prop => prop in user)
console.log("has last name?", hasLastName)
console.log("has user details?", hasDetails)

它通过

不使用外部库来使您的项目变小,它肯定更快,我认为它更容易阅读和理解。

您可以使用

someintersection并返回true/false作为结果。

const user = {
    firstname: 'bob',
    lastname: 'boblastname',
    email: 'bob@example.com'
}
const lastname = ['lastname'];
const userDetails = ['firstname', 'email'];
console.log(_.some(_.intersection(lastname, _.keys(user))))
console.log(_.some(_.intersection(userDetails, _.keys(user))))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>

最新更新