通过数组字符串访问JavaScript对象中的值
Access value from JavaScript object via array-string
我的问题是,我有一个json对象,其中包含一个数组。
var object = {
'items':['entry1','entry2']
}
我想通过接收到的不应更改的常量字符串访问"entry2"。
var string = 'items[1]';
我解决这个问题的唯一方法是通过eval函数。。。
eval('object.'+string);
这将返回入口2。
有没有其他方法可以在不使用eval()
的情况下实现这一点?类似object[string]
或object.string
假设字符串总是相同的形式,则可以使用regex:提取其部分
var m = string.match(/('w+)'[('d+)']/);
var item = object[m[1]][+m[2]];
解释:
正则表达式构建两个组:
('w+) : a string
'[('d+)'] : some digits between brackets
并且这些组位于匹配返回的数组的索引1和2处。
+something
解析该数字。这里并不严格需要它,因为如果可以转换的话,数组会接受字符串,但我发现当解释这种转换时,代码更可读。
在dystroy的anwser之上,您可以使用以下函数:
function getValueFromObject(object, key) {
var m = key.match(/('w+)'[('d+)']/);
return object[m[1]][+m[2]];
}
示例:
var object = {
'items':['entry1','entry2']
}
var string = 'items[1]';
var value = getValueFromObject(object, string); //=> "entry2"
首先,您可以从内部获取数组:
var entries = object.items // entries now is ['entry1','entry2']
然后您需要对其进行索引以获得第二个项目(位于位置1)。因此,您可以通过实现您想要的目标
var answer = entries[1] // answer is now 'entry2'
当然,你可以把这两者结合起来,一步完成:
var answer = object.items[1] // answer is now 'entry2'
我可以看出这是一个人为的例子,但请不要将对象称为"对象",也不要将字符串称为"字符串":s
尝试类似的东西
object.items[1];
相关文章:
- 面向对象JavaScript中的私有函数
- 对象 Javascript 中的标签无效 - 想要添加事件列表器
- 将字符串转换为对象 javascript/jquery
- 正在检查对象javascript中是否存在嵌套属性
- 时间-日期对象JavaScript getUTCMilliseconds
- 仅在对象(javascript)中解析值
- 使用对象(JavaScript或jQuery)填充选择下拉列表
- 引用另一个对象javascript中的对象
- 如何删除列表中的对象?Javascript nodejs和下划线
- 无法从日期对象javascript获取日期和月份
- 如何在if语句中使用对象-Javascript
- 对象javascript错误
- 对象Javascript的少数实例
- 位置对象Javascript
- 将字符串传递到对象javascript中
- 获取对象Javascript或jQuery的最后一个值
- 鼠标接近对象Javascript
- 这个mixins代码是书中的错误吗;面向对象JavaScript的原理”;
- 使用闭包编译器编写更好的面向对象JavaScript完整示例代码
- 访问对象javascript数组中的对象属性值