我可以使用 var x = data.file.file; 查询我的数据但是,我将 file.file 作为字符串,并且 data['file.file'] 失败。有没有办法做到这一点,还是我需要拆分字符串并递归地走进?
最佳答案
如果不诉诸使用 eval(你绝对应该避免),你必须分割字符串。像这样的东西应该可以正常工作:
var data = {
file: {
file: 'YAY'
}
};
getProp(data, 'file.file'); // "YAY"
setProp(data, 'file.newprop.blop', 7); // false
setProp(data, 'file.newprop', {}); // true
setProp(data, 'file.newprop.blop', 7); // true
console.log(data); // {file: {file: "YAY", newprop: {blop: 7}}}
function getProp(obj, path){
var parts = path.split('.'), u, i;
for(i = 0; i < parts.length; i++){
obj = obj[parts[i]];
if(obj === u) return u;
}
return obj;
}
function setProp(obj, path, newValue){
var parts = path.split('.'), u, i;
for(i = 0; i < parts.length - 1; i++){
obj = obj[parts[i]];
if(obj === u) return false;
}
obj[parts[i]] = newValue;
return true;
}
关于javascript - 如何使用数据 ['file.file' 访问 JSON]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20103476/