如何使用包含对象键名的变量访问对象属性

How to access an object property using a variable containing its key name

本文关键字:对象 变量 访问 属性 何使用 包含      更新时间:2023-09-26

我认为这在JS中是不可能的,但我想在继续之前我会仔细检查。

我在数组对象上创建了一个简单的原型,其目的是按键值对数组进行排序。

该函数工作正常,但我想通过将密钥传入函数来使其更具可重用性。但是,当我传入一个值时,它是一个字符串,因此无法正确引用。有没有人知道如何解决这个问题,所以在下面的例子中,我可以按传入的键 1 而不是硬编码的键 1 进行排序。

我的代码是这样的,一个小提琴在这里 http://jsfiddle.net/9KLk8/1/

  Array.prototype.keySort=function(key1)
    {
      this.sort(function(a,b) {return (a.height > b.height) ? 1 : ((b.height > a.height) ? -1 : 0);} );
    }
    var a1 = [ 
            { key: 1, height : 100     },
            { key: 2,    height: 700  },
            { key: 3, height: 200 }
        ];
    a1.keySort("height");
    console.log(a1);

使用括号语法:

Array.prototype.keySort=function(key1)
{
    this.sort(function(a,b) {return (a[key1] > b[key1]) ? 1 : ((b[key1] > a[key1]) ? -1 : 0);} );
}

杰斯菲德尔:http://jsfiddle.net/2hb4K/

是的,你可以这样做,因为使用 JavaScript,你可以使用点表示法和文字 ( a.height ) 或使用括号表示法和字符串 ( a["height"] ) 访问属性。在后一种情况下,字符串不必是文本字符串,它可以是任何表达式的结果,包括变量引用。

因此,a[key1]将访问由 key1 变量命名的属性。