我試圖在JavaScript中使用遞歸來深入探究一個對象並返回它的鍵和值。使用遞歸爲數組中的每個項返回一個值
這方面的一個例子是:
var json2 = {
'key1': {
'key2Nested': {
'key3Nested': {
'key4Nested': 'SomeValue'
},
'key5Nested': 'unimportantValue',
'key6Nested': 'SimpleValue'
},
'key7Nested': '2SimpleValue',
'key8Nested': 'unimportantValue2'
}
};
功能將上面的輸入和返回類似
['key1/key2Nested/key3Nested/key4Nested', 'SomeValue'],
['key1/key2Nested/key5Nested', 'unimportantValue'],
等所有值。 問題是我嘗試在所有對象的鍵上使用for循環,並嘗試在循環內使用遞歸。但遞歸值返回一個數組,它結束了for循環。
下面是代碼,我到目前爲止有:
var makeArray = function(obj) {
var keysArray = Object.keys(obj);
var returnArray = [];
for (var i = 0; i < keysArray.length; i++) {
var key = keysArray[i];
var next_results;
var path, value;
if (typeof(value) != 'object') {
value = obj[key];
returnArray = orderedArray.concat([key, value]);
} else if (typeof(value) == "object") {
next_results = makeArray(obj[key]);
if (next_results) {
for (var j = 0; j < next_results.length; j++) {
next_results[j][1] = '/' + key + next_results[j][1];
returnArray = returnArray.concat(next_results[j]);
}
}
}
console.log(returnArray);
return returnArray;
}
}
功能需要保存從更深層次的遞歸返回鍵,以便它可以將其串連到的路徑。
也許我的算法可以改進,或者我在想它是錯的。任何人都可以給一些建議嗎謝謝!