2014-09-05 148 views
0

問題:創建一個採用對象(任何大小和深度)的javascript函數,遍歷它並運行一些基本字符串替換任何字符串並返回帶有修改值的對象。檢索嵌套在對象中的值

我對implementaion兩個想法,但不能得到一個解決方案之一:

var context = { 
"test1": "123", 
"test2": "123", 
"test2.2": "123", 
"test3": { 
    "test4": "cats", 
    "test5": { 
     "test6": "test1", 
     "test123": "1231232" 
    } 
} 
}; 

思路1)

循環數組,並更改值,

http://php.net/manual/en/language.references.pass.php

以某種方式類似於PHP

思想2)

構建路徑(S)的對象陣列,從而取代「test123」值I可以創建這樣的陣列:

['test3', 'test5', 'test123'] 

...這部分是簡單的,但我怎麼然後將其轉換爲類似:

context['test3']['test5']['test123'] ? 

Thankyou提前。

回答

1

在對象上循環並且如果手邊的值是對象,則遞歸地調用該函數。僞代碼:

function replaceInObject (obj, find, repl) 

    for key in obj 

     value = obj[key] 
     if value is object 
      obj[key] = replaceInObject(value, find, repl) 
     else 
      obj[key] = value.replace(find, repl) 

    return obj