我想看看我有哪些选项来执行一个字符串,它在不使用eval()的情况下在JSON中查找值。
我的JSON看起来像这样:
var caso = {
"_id": "C1M3bqsB92i5SPDu",
"type": "bpm",
"bpm": {
"_data": {
"_id_bpm": "bpm_solicitud_viaticos"
},
"milestones": {
"solicitud": {
"toma_de_datos": {
"nombre": "RAUL MEDINA",
"clave": "123",
"departamento": "Finanzas",
"cantidad": "456"
}
}
}
}
}
现在,我是一个值为
的字符串var step = "caso.bpm.milestones.solicitud.toma_de_datos.nombre";
我从这个JSON获得了我想要的价值:
var thevalue = eval(step);
哪个是我的选项而不是eval()?既高效又易于实施?
非常感谢你的帮助!
答案 0 :(得分:0)
如果字符串始终采用该格式,则可以拆分并迭代它
var pieces = step.split('.');
var parent = window;
while(parent && pieces.length) {
parent = parent[pieces.shift()];
}
if(parent && pieces.length === 0) {
// parent is now the value
}
这是一个小提琴:http://jsfiddle.net/9ZjEt/
答案 1 :(得分:0)
var pieces = step.split('.'),
result;
pieces.shift(); //discards superfluous "caso"
result = caso[pieces.shift()];
while (pieces.length >= 1) {
result = result[pieces.shift()];
}