Javascript 获取对象值时不替换变量名称的变量值
我有一个由用户输入的变量Searching。单击按钮时,我希望显示(用户输入姓名)的年龄数据。但是,我无法实现这一点:Javascript 获取对象值时不替换变量名称的变量值,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个由用户输入的变量Searching。单击按钮时,我希望显示(用户输入姓名)的年龄数据。但是,我无法实现这一点: $('#output').html("object: " + searchingFor + "<br> age: " + searchingFor.age ); $('#output').html(“对象:+searkingfor+ “年龄:”+searking.age); 在代码的末尾,我需要searchingFor.age来获取用户输
$('#output').html("object: " + searchingFor +
"<br> age: " + searchingFor.age );
$('#output').html(“对象:+searkingfor+
“
年龄:”+searking.age);
在代码的末尾,我需要searchingFor.age来获取用户输入的年龄,但它正在尝试检索“searchingFor”对象的年龄
例如:如果用户输入“jack”,Searching For将等于“jack”,然后代码将检索jacks的年龄,并将其输出。从我如何解释您的问题,您希望动态引用预定义的变量。如果这是一个错误的假设,请让我知道 如果是这种情况,您可以在全局范围上定义对象并引用它们:
var jack = {
age: "22"
};
var sally = {
age: "25"
};
$(function () {
var searchingFor = "jack";
console.log(window[searchingFor].age);
});
然而
不建议将事物放在全局范围内。您最好创建一个具有名称、年龄等属性的person对象数组,遍历该数组,并将项目名称与searchingFor值进行比较,如下所示:
$(function () {
var people = [
{
name: "jack",
age: "22"
},
{
name: "sally",
age: "25"
}
];
var searchingFor = "jack";
$.each(people, function (index, element) {
if (element.name === searchingFor) {
console.log(element.age);
return false;
}
});
});
更好的解决方案
根据@Barmar的评论
$(function () {
var people = {
jack: {
age: "22"
},
sally: {
age: "25"
}
};
var searchingFor = "jack";
console.log(people[searchingFor]);
});
欢迎来到堆栈溢出!寻求代码帮助的问题必须包括在问题本身中重现代码所需的最短代码,最好是以最短的代码。在再次解决这个问题之前,我认为您需要阅读一些javascript基础知识并提高对javascript的理解。因此,基本上您是在寻找用户键入一个字符串,而该字符串是您已经创建的对象的名称?那么你已经有了一个带有年龄属性的对象“jack”?你想动态调用一个对象吗?我建议
people
应该是一个对象,而不是数组,并使用名称作为键。然后你可以使用人[搜索]
@Barmar用你的评论更新我的答案。抢手货