【发布时间】:2019-02-22 20:42:47
【问题描述】:
如果我知道两个 JavaScript 对象之间有一个共同的属性,分别称为“req”和“updatedDoc”,有没有一种方法可以使用占位符参数来表示任何键,以便找到匹配的正确的在两个物体上?我试过了,但它不起作用:
for (const [key, val] of Object.entries(req)) {
if (key === updatedDoc[key]) {
console.log("key, val", key, val);
}
}
顺便说一句,在我的用例中,我知道两个对象之间总会有一个匹配的属性。为了澄清,这两个对象被称为“req”和“updatedDoc”。我不知道它们的键是什么,但我知道这两个对象将有一个共同的键。
为了更清楚一点,“req”将是一些简单的东西,比如:
const req = {
"deleted" : true,
"apiKey" : "4d9d9291",
"token" : "ffdsfjsdfsdjfa"
}
...而updatedDoc 将是一个完整的文档,如下所示:
const updatedDoc = {
_id: <ObjectId>,
firstName: "John",
lastName: "Smith",
age: 42
deleted: false
}
两者都有一个名为“deleted”的属性。基本上,我将传入的请求与其相关的整个文档相匹配。然后我想从“req”中获取值并将其保存到“updatedDoc”以获得正确的键。但首先我需要找到匹配的键,并从“req”中提取值。有什么办法可以做到吗?
【问题讨论】:
-
updatedDoc是objects的对象吗?
-
您是否只测试匹配的属性和值?或者只是钥匙。如果只是键,则其中任何一个都可以:stackoverflow.com/questions/12433604/… 为您获取匹配项,然后您可以使用它来获取值等。
-
在上面添加了更多的清晰度。
-
是的,所以只需抓住每个键并进行比较。如果你知道一个对象只有一个键,那就更简单了;无需循环。
-
key === updatedDoc[key] 我认为这里的问题是,通过这种方式,您将 req 中的键与 updatedDoc 中的值进行比较,而您想比较这两个对象的键
标签: javascript object ecmascript-6