[英]is it valid javascript to access non-numeric key object with a numeric key?
我有一个对象
data = {
'choiceA' : 'Long-Wear',
'choiceB' : 'Anti-Age Lifting/Firming',
'choiceC' : 'Replenishing/ Moisturizing',
'choiceD' : 'Natural/ True-to-Skin',
'choiceE' : 'Smoothing/ Illuminating'
}
我需要检索给定整数的第四个值
position = 3;
通常我会写
key = $.inArray( position, ['choiceA', 'choiceB', 'choiceC', 'choiceD', 'choiceE']);
answer = data[key];
但是用这样的数字键直接访问对象是有效的javascript吗?
answer = data[position]; // where position is an integer
编辑:
我写的一些不好的代码,因为我正在向后使用$ .inArray!
我打算写
arr = ['choiceA', 'choiceB', 'choiceC', 'choiceD', 'choiceE'];
key = arr[position];
answer = data[key];
不,在你有数字对象“键”之前它是无效的,即
data = {
'1' : 'Long-Wear',
'2' : 'Anti-Age Lifting/Firming',
'3' : 'Replenishing/ Moisturizing',
'4' : 'Natural/ True-to-Skin',
'5' : 'Smoothing/ Illuminating'
};
此外,需要注意的是,JavaScript对象中的属性未进行排序 。 所以你的解决方案是我看到的最佳方式。
如果你想尝试一下,你会发现它无效。 甚至更多它不工作!
data[position]
将在您的示例中返回undefined ...
两件事情:
Javascript键始终是字符串。 如果您传递其他内容(例如,数字),则会将其转换为字符串。 (例如,尝试使用array["3"]
索引数组,它应该可以工作
Javascript对象没有订购! 您无法轻松取回第i个键值对。 相反,你应该使用一个数组来存储东西(或类似的东西):
data = [ { name:'choiceA', value: 'Long-Wear'}, { name:'choiceB', value: 'Anti-Age Lifting/Firming'} ];
如果你不能改变数据表示,你可以做的一件事就是使用for-in循环和计数变量迭代你的对象。 但是,这种方法不可移植,因为并非所有浏览器都按照定义键的顺序进行迭代。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.