簡體   English   中英

如何使用包含鍵名的變量訪問對象屬性

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

我認為這在JS中是不可能的,但是我認為在繼續之前我會仔細檢查。

我在數組對象上創建了一個簡單的原型,其目的是通過鍵值對數組進行排序。

該功能正常工作,但是我想通過將一個密鑰傳入該功能使其更加可重用。 但是,當我傳入一個值時,它是一個字符串,因此無法正確引用。 是否有人知道如何解決此問題,所以在下面的示例中,我可以按傳入的key1而不是硬編碼的key1進行排序。

我的代碼是這個,這里有一個小提琴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);} );
}

Jsfiddle: http : //jsfiddle.net/2hb4K/

是的,您可以執行此操作,因為使用JavaScript,您可以使用點分表示法和文字( a.height ),也可以使用帶括號的表示法和字符串( a["height"] )訪問屬性。 在后一種情況下,字符串不必是文字字符串,它可以是任何表達式的結果,包括變量引用。

因此a[key1]將訪問由key1變量命名的屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM