Как вы можете определить имя объекта, если знаете, каково его свойство? - PullRequest
0 голосов
/ 24 июня 2018

Я работаю над программой JavaScript, которая помогает вам шифровать и дешифровать сообщения. Чтобы сделать его очень безопасным, я планирую создать объект, содержащий свойства id и text. Вот пример объекта:

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

Допустим, я знаю, что текст равен ∆∂˙˚∆ƒ˙ø©ˆ´¨¬˚å˙∂©¬˚. Как я могу понять, что имя объекта, имеющего это значение для свойства text, равно object1?

Спасибо заранее.

Ответы [ 2 ]

0 голосов
/ 24 июня 2018

Это зависит от scope, где вы объявляете свой var, поэтому я бы предпочел использовать this (что также будет работать для window case):

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

0 голосов
/ 24 июня 2018
Object.keys(window).find((key) => {
    let obj = window[key];
    return obj && typeof obj === "object" && obj.text && obj.id && obj.text === "∆∂˙˚∆ƒ˙ø©ˆ´¨¬˚å˙∂©¬˚";
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...