我有一个带数字数据的数组,我需要定位数组内对象的值。
一个清楚的例子,这里是数据:
[
{1: 'one'},
{2: 'two'},
{3: 'three}
]
我正在减少它以获得我想要的那个,所以我留下了[{3: 'three'}]
。
现在我如何获得'三'字符串?
非常感谢
答案 0 :(得分:2)
不是有效的JavaScript标识符的任何属性名称(例如,具有空格或连字符的属性名称,或者以数字开头的 >)只能使用方括号表示法访问。当要动态确定属性名称时(在运行时之前未确定属性名称),此表示法也非常有用。
var obj = [{
3: 'three'
}];
console.log(obj[0][3]);
如果密钥是不知道的:
var obj = [{
3: 'three'
}];
console.log(obj[0][Object.keys(obj[0])]);
答案 1 :(得分:1)
你可以做到这一点,即使它有点混乱:
var d = [{3: 'three'}];
d[0][Object.keys(d[0])[0]]
这说明不知道他们的关键是什么,所以任何单一的条目对象都可以工作。
您可以使用另一个变量进行简化:
var _d = d[0];
_d[Object.keys(_d)[0]]
虽然理想情况下你会编写一个函数来封装它:
function firstValue(list) {
return list[0][Object.keys(list[0])[0]];
}
希望对Object.values
的支持能够清理它:
var d = [{3: 'three'}];
Object.values(d[0])[0]
答案 2 :(得分:1)
如果在过滤后,您只剩下一件商品并且您不知道密钥,则可以通过以下方式访问该值:
var obj = ([{3: 'three'}])[0];
obj[Object.keys(obj)[0]];
希望它有所帮助。
答案 3 :(得分:0)
如果您的数组是a = [{3: 'three'}]
,请使用
a[0][3]
第一个括号用于数组的索引。第二个括号用于字典3
的键{3: 'three'}
。
如果要获得数组中包含的字典的单个元素的值,请使用
a[0][Object.keys(a[0])[0]]
但我还会对数组的长度和字典的长度添加一些检查。
答案 4 :(得分:0)
我猜这个问题的症结在于你不知道该放在第二个方位......
var a = {3: 'three'};
var val;
for (var i in a) val = a[i]; // val is now 'three'