gpt4 book ai didi

javascript - 检查是否所有顶级对象都具有相同的属性

转载 作者:搜寻专家 更新时间:2023-11-01 00:42:25 24 4
gpt4 key购买 nike

这是一些 JSON:

{
"environments":{

"production":{
"zmq_config":{
"host":"*",
"port":"7676"
},
"redis_server_config":{
"host":"localhost",
"port":"26379"
}
},

"dev_remote":{
"zmq_config":{
"host":"*",
"port":"5555"
},
"redis_server_config":{
"host":"localhost",
"port":"16379"
}
},

"dev_local":{
"zmq_config":{
"host":"*",
"port":"5555"
},
"redis_server_config":{
"host":"localhost",
"port":"6379"
}
}
}
}

我想在我的测试套件中创建一个测试,以确保所有属性都具有与其互补属性相同的属性。

例如,对于“environments”的每个属性,我想检查它们是否具有相同的属性;在这种情况下,他们有 - 他们都有 2 个属性“zmq_config”和“redis_server_config”。现在我想至少再做一层检查。对于属性“zmq_config”和“redis_server_config”,我想检查它们是否依次具有相同的属性“host”和“port”。

你明白了。

是否有图书馆可以做到这一点?是否有某种 JavaScript 身份运算符可以检查这一点,只查看顶级对象?

现在我能想到的最简单的方法就是遍历并查看每个具有相同名称的属性(假设具有相同名称的属性位于对象层次结构中的相同位置),然后只需查看它们是否具有相同的子属性。

Underscore.js 是最好的选择吗?似乎 Underscore 具有可能有效的功能:

_.isEqual(obj1, obj2);

根据我的研究,这看起来是最佳候选者:

_.isMatch(obj1,obj2);

最佳答案

对于每个要测试的对象,您可以使用 Object.keys 函数提取对象的键,然后比较它们,因为您只想知道属性是否相等,值无关紧要。

然后,当你提取每个对象的键时,你可以使用 lodash 提供的 _.isEqual 函数而不是下划线进行比较(通常 lodash 具有更好的性能)。

为了尽可能自动化,您应该创建一个递归函数来提取键并比较它们。

关于javascript - 检查是否所有顶级对象都具有相同的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30089538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com