2015-07-05 3 views
0

Я хочу, чтобы разобрать строку на селектор объекта объекта, как так:как разобрать строку яваскрипта селектора объекта

var test = 'object.prop1.prop2'; 

into 

object['prop1']['prop2']; 

Проблема в том я не знаю, как много свойств строка может иметь.

Каков наилучший способ синтаксического анализа строки, идеальной без использования json parse/eval?

ответ

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')); 

Идея заключается в том, чтобы взять связку ключей, разделить его на основе точки. Тогда у вас есть произвольно большой массив ключей, поэтому мы берем каждый ключ один за другим и погружаемся в объект. (Если мы окажемся в тупике, мы выручим.)

+0

Приветствие Мэтью, я не понимаю, как это возвращает вложенные свойства? –

Смежные вопросы