2014-02-21 80 views
0

夥計們,我有下面的JSON對象,我想遞歸查找foobar的每一個出現。對象中的JavaScript遞歸替換

此外[Object]可能包含foo這也需要被替換。

{ _id: 530797d8952e10129f97fde3, 
    Product: 'something', 
    Realm: [ 'something', 'something','foo' ], 
    Service: 'Node', 
    Owners: [ 'foo', 'something' ], 
    Project: 'something', 
    URLs: 
    [ { 'foo': [Object] }, 
     { 'foo': [Object] }, 
     { 'foo': [Object] } ] } 

我將如何循環通過這?我試過但失敗:

var cleanObject = {} 
for (key in dirtyObject) { 
    key = key.replace('foo', 'bar'); 
    cleanObject[key] = dirtyObject[key]; 
} 
+0

您的標題提到遞歸(這似乎是合理的),但您顯示的代碼不包括任何。你問如何做遞歸?還是有更多的代碼,你沒有顯示。 –

回答

1

提示:這不是「JSON對象」。沒有像「JSON對象」這樣的東西。 「JSON」是一個字符串,代表一個對象。你在那裏有一個對象文字。

但是,JSON可以提供幫助。考慮嘗試:

var cleanObject = JSON.parse(JSON.stringify(dirtyObject).replace(/foo/g,'bar')); 
+0

這將取代鍵和值。如果我正確地閱讀問題,OP只想更換密鑰。 –

+1

@StephenThomas True。但是我把這個問題看作是「每一次出現」,而且這個代碼只是一個拙劣的嘗試,只能代替密鑰。這個問題是含糊不清的... –

+0

必須同意。不知道OP在這裏真的想要什麼 –