0
你好,我有一个相当奇怪的问题,没有多大意义。 我有一个变量是一个字符串,我想搜索一个对象的属性(也是一个对象)具有相同的名称。像这样:我想返回一个对象,但我得到一个字符串
var ObjectProperty; /// multi-layer object
var PropertyName; //string
如果在对象中存在与PropertyName匹配的内容,我想返回它。 示例代码:
OBJECT:
Bird.Raven = {
Name:"Raven",
Color:"Black",
}
//Object
Bird.Duck = {
Name:"Duck",
Color: "Gray",
}
//Object
Bird.Cardinal = {
Name:"Cardinal",
Color: "Red",
}//Object
///ObjectProperty sample.
主要我想在里面找“鸟”:
:我使用的,假设“n”是该属性名的变量我想搜索var Cardinal = "Cardinal"; //string
///PropertyName sample.
当前功能
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首选。
感谢您的帮助,我希望这是有道理的!
打我吧:) – wprl
尽管我不太熟悉括号和键和属性(尽管我正在处理这个问题),但我不得不说这是神奇的!谢谢! – user2588440
@ user2588440::-)对象属性有*名称*。我们可以通过两种方式给JavaScript引擎提供我们想要的属性的名称:或者通过在文本中直接输入它作为“标识符”,比如“a.height”中的“height”,或者通过给它作为一个字符串发送到引擎:'a [“height”]'。引擎知道我们正在做的是哪一个,因为我们使用带标识符的'.',但是我们在字符串中使用了'[...]'。这是做同样事情的两种不同方式。如果我们使用的是字符串,它可以是任何字符串,所以'a'“he”+“ight”]'工作,并且'key1 =“height”'然后''[key1]'工作。 –