我想将字符串解析为对象对象选择器,如下所示:
var test = 'object.prop1.prop2';
into
object['prop1']['prop2'];
问题是我不知道字符串可以有多少属性。
解析字符串的最佳方法是什么,理想情况下没有像json parse / eval这样的东西?
答案 0 :(得分:1)
答案 1 :(得分:0)
Juhana的链接非常好,但也比你在这里有一个复杂的问题。这是我的看法(https://jsfiddle.net/gm32f6fp/3/):
var object = {
prop1: {
prop2: {
foo: 1
}
}
};
function get(object, key) {
var keys = key.split('.');
for (var i = 0; i < keys.length; i++) {
if (!object.hasOwnProperty(keys[i])) {
return null;
}
object = object[keys[i]];
}
return object;
}
console.log(get(object, 'prop1.prop2'));
console.log(get(object, 'prop1.prop3'));
我们的想法是获取密钥串,根据点将其拆分。然后你有一个任意大的键数组,所以我们逐个拿出每个键,然后潜入对象。 (如果我们最终走向死胡同,我们就会纾困。)