将javascript对象键与输入值进行比较
我有一个js对象,它存储在变量中将javascript对象键与输入值进行比较,javascript,arrays,json,javascript-objects,Javascript,Arrays,Json,Javascript Objects,我有一个js对象,它存储在变量中 var data = { "France":[ { 'population': "8M", } ], "Spain":[ { 'population': "18M", } ] } 我有一个输入字段,它有一些值(从下拉列表中选择) 我没有定义。我发现,若我把变量c1代替键的名称,我就不能取值。若我输入键France的名称
var data = {
"France":[
{
'population': "8M",
}
],
"Spain":[
{
'population': "18M",
}
]
}
我有一个输入字段,它有一些值(从下拉列表中选择)
我没有定义。我发现,若我把变量c1代替键的名称,我就不能取值。若我输入键France的名称,一切正常,但若我输入等于France的c1变量,那个么它就不工作了。
任何提示/帮助如何管理此项工作
谢谢。由于
c1
是一个变量,请使用括号表示法,这将允许您使用属性名称作为变量:
改变
$(".country1-result h1").html(data.c1[0].population);
到
var data={“法国”:[{‘人口’:“800万”,}],“西班牙”:[{‘人口’:“1800万”,}]}
函数myFunction(){}
$(“.compare”)。单击(函数(){
var c1=$(“.first country”).val();//从输入中获取值
var zemlja=Object.keys(数据);//从对象获取所有键
var n=zemlja.includes(c1);//检查对象中是否包含值
如果(n){
$(“.country1 result h1”).html(数据[c1][0].population);//如果包含该值,请将人口数添加到结果中
}
});代码>
如果您可以创建一个可运行的代码片段,那就太好了。调试速度更快您不需要这个:var zemlja=Object.keys(数据)代码>。相反,您可以尝试.html(!!data[c1]&&data[c1][0]。填充| |“”)
仍然不工作,我收到消息无法读取未定义的属性。您需要检查数据[c1]
是否存在。看阿泰姆的answer@MarkoPetković,我通过添加一些HTML和更新几个选择器更新了答案……请检查。它正在工作。我检查了数据是否存在。感谢大家。@Mamun我已经更新了您的代码,并添加了myFunction
,因为它抛出了错误。是的,这是OP代码的一部分,但是用户将面临这个问题,所以添加了它。如果不需要编辑,请还原。
$( ".compare button" ).click(function() {
var c1 = $( ".first-country input" ).val(); //take value from input
var zemlja = Object.keys(data); //take all keys from object
var n = zemlja.includes(c1); //check if value is included in object
if (n) {
$(".country1-result h1").html(data.c1[0].population); //if value is included, add population number to result
}
});
$(".country1-result h1").html(data.c1[0].population);
$(".country1-result h1").html(data[c1][0].population);
$( ".compare button" ).click(function() {
var c1 = $( ".first-country input" ).val(); //take value from input
var result = data[c1] ? data[c1][0].population : '';
$(".country1-result h1").html(result);
});