gpt4 book ai didi

javascript - 如何检查两个对象是否具有相同的一组属性名称?

转载 作者:IT老高 更新时间:2023-10-28 21:53:07 25 4
gpt4 key购买 nike

我在我的应用程序中使用 node、mocha 和 chai。我想测试我返回的结果数据属性是否与我的模型对象之一相同的“对象类型”(非常类似于 chai 的实例)。我只是想确认这两个对象具有相同的属性名称集。 我对属性的实际值特别不感兴趣。

假设我有如下的模型 Person。我想检查我的 results.data 是否具有与预期模型相同的所有属性。所以在这种情况下,Person 具有 firstName 和 lastName。

所以如果 results.data.lastNameresults.data.firstName 都存在,那么它应该返回 true。如果其中任何一个都不存在,它应该返回 false。如果 results.data 有任何额外的属性,比如 results.data.surname,那么它会返回 false,因为 surname 在 Person 中不存在。

此型号

function Person(data) {
var self = this;
self.firstName = "unknown";
self.lastName = "unknown";

if (typeof data != "undefined") {
self.firstName = data.firstName;
self.lastName = data.lastName;
}
}

最佳答案

您可以序列化简单数据以检查是否相等:

data1 = {firstName: 'John', lastName: 'Smith'};
data2 = {firstName: 'Jane', lastName: 'Smith'};
JSON.stringify(data1) === JSON.stringify(data2)

这会给你类似的东西

'{firstName:"John",lastName:"Smith"}' === '{firstName:"Jane",lastName:"Smith"}'

作为一个函数...

function compare(a, b) {
return JSON.stringify(a) === JSON.stringify(b);
}
compare(data1, data2);

编辑

如果您像您说的那样使用 chai,请查看 http://chaijs.com/api/bdd/#equal-section

编辑 2

如果你只是想检查键...

function compareKeys(a, b) {
var aKeys = Object.keys(a).sort();
var bKeys = Object.keys(b).sort();
return JSON.stringify(aKeys) === JSON.stringify(bKeys);
}

应该这样做。

关于javascript - 如何检查两个对象是否具有相同的一组属性名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14368596/

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