为什么';此JavaScript对象键是否与同名字符串匹配?
下面是测试对象的基本比较为什么';此JavaScript对象键是否与同名字符串匹配?,javascript,object,key,Javascript,Object,Key,下面是测试对象的基本比较 var testObj = {"hey":"blue"}; alert(Object.keys(testObj)); // alerts hey if (Object.keys(testObj) === "hey") { alert('matches'); } 第一个警报生成“hey”,它与if语句比较“hey”的右侧相匹配,但是警报(“matches”)没有触发,这是为什么 编辑:抱歉,愚蠢的问题“对象。键(testObj)”返回一个数组。所以基本上你需要比较一
var testObj = {"hey":"blue"};
alert(Object.keys(testObj)); // alerts hey
if (Object.keys(testObj) === "hey") {
alert('matches');
}
第一个警报生成“hey”,它与if语句比较“hey”的右侧相匹配,但是警报(“matches”)没有触发,这是为什么
编辑:抱歉,愚蠢的问题“对象。键(testObj)”返回一个数组。所以基本上你需要比较一个数组。
请尝试下面的代码片段
var testObj={“嘿”:“蓝色”};
警报(Object.keys(testObj));//警报嘿
log(Object.keys(testObj));
if(Object.keys(testObj)[0]=“嘿”){
警报(“匹配”);
}
Object.keys()
方法返回给定对象自身可枚举属性的数组。因此需要从该数组中获取索引
var testObj={
“嘿”:“蓝色”
};
警报(Object.keys(testObj));//警报嘿
//[0]将是数组中的第一个元素
if(Object.keys(testObj)[0]=“嘿”){
警报(“匹配”);
}
是返回数组而不是字符串。请参阅控制台。log
hey
是第一个数组优先参数。因此您可以像这样匹配对象。键(testObj)
它们将显示hey
var testObj={
“嘿”:“蓝色”
};
console.log(Object.keys(testObj));//警报嘿
if(Object.keys(testObj)[0]=“嘿”){
log('matches');
}
您必须指定索引编号才能使用:选中此项
函数myfn()
{
var testObj={“嘿”:“blue”};
警报(Object.keys(testObj));//警报
if(Object.keys(testObj)[0]=“嘿”){
警报(“匹配”);
}
}
Object.keys(obj)
重新启动一个数组,因此如果对象中有多个键,则可以在其上循环匹配
var testObj={“嘿”:“蓝色”、“某物”:“其他”};
console.log(Object.keys(testObj));//警报嘿
Object.keys(testObj).forEach(函数(键){
如果(键==“嘿”){
警报(“匹配”);
}
})
什么对象。键
返回?字符串/数组?使用Object.keys(testObj)[0]===“嘿”
顺便说一句,如果您使用==
进行比较,它就会起作用。请始终阅读有关您正在使用的函数的文档。另外,一点console.log
也不会有什么坏处。区分类型的比较总是一件好事。我会承认我的第一手错误,没有提供完整的代码。我遵循了与您所展示的相同的结构,但是当我有一个直接匹配时,它就不起作用了。让我用带有切换值的代码副本更新我的问题。当然。我会尽力帮助你的。不,就是这样,即使只有一个值,你也必须指定,这很奇怪。