如果你知道一个对象的属性等于什么,你怎么能弄清楚它的名字?



我正在开发一个JavaScript程序,可以帮助您加密和解密消息。为了使它非常安全,我计划创建一个包含idtext属性的对象。下面是一个示例对象:

var object1 = {
id: "AE309JKL36784AJBCMDH"
text: "∆∂˙˚∆ƒ˙ø©ˆ´¨¬˚å˙∂©¬˚"
}

假设我知道文本等于∆∂˙˚∆ƒ˙ø©ˆ´¨¬˚å˙∂©¬˚。我如何能够确定具有此值的对象的名称text属性是object1

提前谢谢。

这取决于scope,你在哪里声明你的var,所以我宁愿使用this(这也适用于window的情况(:

var object1 = {
id:  "AE309JKL36784AJBCMDH",
text: "∆∂˙˚∆ƒ˙ø©ˆ´¨¬˚å˙∂©¬˚"
};
console.log(Object.keys(this).find(k => this[k] && this[k].text && this[k].text === '∆∂˙˚∆ƒ˙ø©ˆ´¨¬˚å˙∂©¬˚'));

@Dave牛顿是绝对正确的,那么在这种情况下,这个答案是行不通的:

(function(){
var object1 = {
id:  "AE309JKL36784AJBCMDH",
text: "∆∂˙˚∆ƒ˙ø©ˆ´¨¬˚å˙∂©¬˚"
};
console.log(Object.keys(this).find(k => this[k] && this[k].text &&     this[k].text === '∆∂˙˚∆ƒ˙ø©ˆ´¨¬˚å˙∂©¬˚'));
}())

this将调用范围window

Object.keys(window).find((key) => {
let obj = window[key];
return obj && typeof obj === "object" && obj.text && obj.id && obj.text === "∆∂˙˚∆ƒ˙ø©ˆ´¨¬˚å˙∂©¬˚";
});

相关内容

最新更新