我正在开发一个JavaScript程序,可以帮助您加密和解密消息。为了使它非常安全,我计划创建一个包含id
和text
属性的对象。下面是一个示例对象:
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 === "∆∂˙˚∆ƒ˙ø©ˆ´¨¬˚å˙∂©¬˚";
});