获取对象值时变量的值不替换变量的名称

时间:2016-03-25 21:48:15

标签: javascript jquery html css

我有一个由用户输入的变量searchFor。单击按钮时,我希望显示(用户输入的姓名)的年龄数据。但是,我不能让这个工作:

    $('#output').html("object: " + searchingFor +
        "<br> age: " + searchingFor.age );

在代码的最后,我需要searchFor.age来获取用户输入年龄的年龄,而是尝试检索对象的年龄&quot; searchFor&#39;


例如:如果用户输入&#39; jack&#39;,则searchFor将等于&#39; jack&#39;然后代码将检索插孔年龄,并输出它。

1 个答案:

答案 0 :(得分:0)

从我如何解释您的问题,您希望动态引用预定义的变量。如果这是一个错误的假设,请告诉我。

如果是这种情况,您可以在全局范围内定义对象并引用它们:

  var jack = {
    age: "22"
  };
  var sally = {
    age: "25"
  };
  $(function () {
    var searchingFor = "jack";
    console.log(window[searchingFor].age);
  });

然而

不建议将事物放在全局范围内。最好创建一个具有名称,年龄等属性的人物对象数组,迭代该数组并将项目名称与searchFor值进行比较,如下所示:

$(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]);
});