首页 > 解决方案 > 如何通过值 [JS] 获取对象的属性名称

问题描述

questions={
     1:{
          quest: "blah blah blah",
          answers: ["1812", "1837", "1864", "1899"],
          correct: "1837"
     },
     2:{
         quest: "fasfa asf",
         answers : ["2","3","4","5"],
         correct : "3"
     }
 }

例如,我知道1. 我需要获取该对象的名称及其值。 var x = {quest: "blah blah blah", answers: ["1812", "1837", "1864", "1899"], correct: "1837"}

returnNameOf(x)预期输出1

标签: javascriptoop

解决方案


您可以使用find()Object.keys()比较对象JSON.stringify()

let questions={
     1:{
          quest: "blah blah blah",
          answers: ["1812", "1837", "1864", "1899"],
          correct: "1837"
     },
     2:{
         quest: "fasfa asf",
         answers : ["2","3","4","5"],
         correct : "3"
     }
 }
 
 let val = {
         quest: "fasfa asf",
         answers : ["2","3","4","5"],
         correct : "3"
     }
function getKey(obj,value){
  if(typeof value === "object"){
    value = JSON.stringify(value);
    return Object.keys(obj).find(key => JSON.stringify(obj[key]) === value);
  }
  else return Object.keys(obj).find(key => obj[key] === value);
}

console.log(getKey(questions,val));


推荐阅读