我想返回一个对象,但我得到一个字符串

I want to return an Object, but I get a String

本文关键字:字符串 一个 返回 一个对象      更新时间:2023-09-26

你好,我有一个相当奇怪的问题,没有多大意义。我有一个字符串变量,我想搜索具有相同名称的对象(也是对象)的属性。这样:

var ObjectProperty; /// multi-layer object
var PropertyName; //string

如果对象中的属性名称匹配,我想返回它。示例代码:

OBJECT:
Bird.Raven = {
Name:"Raven",
Color:"Black",
} 
//Object
Bird.Duck = {
Name:"Duck",
Color: "Gray",
} 
//Object
Bird.Cardinal = {
Name:"Cardinal",
Color: "Red",
}//Object
///ObjectProperty sample.

我想在"鸟"中找到的键:

var Cardinal = "Cardinal"; //string
///PropertyName sample.

我正在使用的当前函数,假设"n"是我要搜索的属性名称变量:

var searchBirds = function(n) {
  for(var key in Bird) {
    var keyName = key.toString();
  if(keyName == n){
  console.log("bird " + key + " has been found.");
  console.log(typeof key);//RETURNS STRING
  return key;
  }
  else{
  console.log(n + " could not be found")
  };
  }
  }

当这应该是一个对象时,为什么它返回一个字符串?如何让它将密钥作为对象返回?怎么了?香草Javascript首选。

感谢您的帮助,希望这是有道理的!

语句for(var key in Bird)循环访问Bird对象上可枚举属性的名称。若要获取该属性的值,请执行Bird[key]

例:

var key, birdObject;
for (key in Bird) {
    birdObject = Bird[key];
    console.log(key + ".Color = " + birdObject.Color);
}

。将输出

乌鸦颜色 = 黑色鸭子颜色 = 灰色红衣主教颜色 = 红色

。没有指定的顺序(尽管几乎所有引擎都会按照属性添加到对象的顺序来执行它们[前提是没有一个属性名称都是数字,在这种情况下有更多的变化] - 但这不在规范中)。