如何使用包含对象键名的变量访问对象属性
How to access an object property using a variable containing its key name
我认为这在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
变量命名的属性。
相关文章:
- 如何在HTML中显示服务器对象变量
- 在Javascript中重新分配对象变量时,原始对象会发生什么
- Javascript 方法看不到对象变量
- JavaScript对象范围-在对象方法中使用对象变量
- 将对象(变量)传递给angularjs指令
- 对象变量在 JavaScript 中是不可访问的
- 无法访问公共JavaScript对象变量
- 可以't获取具有“t”的对象变量;这个“;由setTimeout()函数调用的对象函数中的属性
- Javascript:如何在回调中设置父对象变量
- 从方法内部设置对象变量
- 访问对象中的对象变量
- JavaScript 中的对象变量
- 从 json 代码中删除 javascript 对象变量名称文本
- 将变量传递到对象变量中
- JavaScript 如何重新识别事件对象变量
- 从对象变量中获取子节点
- 使对象变量在所有“更深”的范围内都是可访问的
- 从方法 JavaScript 访问对象变量
- 如何在 javascript 中保存对象变量的状态
- 无法访问IE和Mozilla中javascript的类对象变量