【问题标题】:How to convert string as object's field name in javascript如何在javascript中将字符串转换为对象的字段名称
【发布时间】:2018-11-02 06:50:46
【问题描述】:

我有一个像这样的 js 对象:

obj = {
  name: 'js',
  age: 20
};

现在我想访问obj的name字段,但是我只能得到字符串'name',那么如何将'name'转换为obj的字段名,然后得到像obj.name这样的结果。

提前谢谢你。

【问题讨论】:

  • obj.name 还是我错过了问题的重点?
  • @mhitza:也许“name”存储在一个变量中,他们想像obj.<[evaluate_var]>一样访问它,其中<[evaluate_var]>存储为“name”?
  • @Brad Christie 是对的。
  • 谢谢大家的回答,这些答案都是一样的,我试过是正确的。非常感谢。

标签: javascript


【解决方案1】:

您可以使用索引访问 javascript 对象的属性,即

var obj = {
  name: 'js',
  age: 20
};

var isSame = (obj["name"] == obj.name)
alert(isSame);

var nameIndex = "name"; // Now you can use nameIndex as an indexor of obj to get the value of property name.
isSame = (obj[nameIndex] == obj.name)

检查示例@:http://www.jsfiddle.net/W8EAr/

【讨论】:

    【解决方案2】:

    在 Javascript 中,obj.name 等价于 obj['name'],这增加了必要的间接性。

    在你的例子中:

    var fieldName = 'name'
    var obj = {
      name: 'js',
      age: 20
    };
    var value = obj[fieldName]; // 'js'
    

    【讨论】:

      【解决方案3】:

      完全不相关,但对于任何试图从字符串变量定义对象的字段名称的人,您可以尝试:

      const field = 'asdf'
      const obj = {[field]: 123}
      document.body.innerHTML = obj.asdf

      【讨论】:

      • 不错的解决方案!!
      【解决方案4】:

      很简单,通过变量访问对象的值,使用方括号:

      var property = 'name';
      var obj = {name: 'js'};
      alert(obj[property]); // pops 'js'
      

      【讨论】:

        【解决方案5】:

        由于对象是 javascript 中的关联数组,您可以使用 obj['name']obj[fieldName] 访问“名称”字段,其中 fieldName = 'name'

        【讨论】:

          猜你喜欢
          • 2017-09-08
          • 1970-01-01
          • 2021-05-22
          • 2016-02-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多