javascript - Array created by .push in a loop is the correct length but only pushing the last element on repeat -
i referencing global variable , parsing through push items onto stack , return stack used elsewhere. returned array correct length repeats items of last element.
var global = { "param11": { "param21": { "param31": { "param4": "1", "param5": "2", "param6": "3", }, "param32": { "param4": "4", "param5": "5", "param6": "6", } }, "param22": { "param33": { "param4": "7", "param5": "8", "param6": "9", } } }, "param12": { "param23": { "param34": { "param4": "10", "param5": "11", "param6": "12", }, "param35": { "param4": "13", "param5": "14", "param6": "15", } } } }; function getstack() { var obj = {}; var stack=[]; var json = json.parse(global); for(var param1 in json){ for(var param2 in json[param1]){ for(var param3 in json[param1][param2]){ obj.item1 = json[param1][param2][param3][param4]; obj.item2 = json[param1][param2][param3][param5]; obj.item3 = json[param1][param2][param3][param6]; stack.push(obj); } } } return stack; } returned value:
[ {"param4":"13", "param5":"14", "param6":"15"}, {"param4":"13", "param5":"14", "param6":"15"}, {"param4":"13", "param5":"14", "param6":"15"}, {"param4":"13", "param5":"14", "param6":"15"}, {"param4":"13", "param5":"14", "param6":"15"} ]
with obj declared @ beginning of function, there's single object in existence. each iteration of loop change 1 object's properties. want create new {} object each iteration of inner loop.
for(var param1 in json){ for(var param2 in json[param1]){ for(var param3 in json[param1][param2]){ var obj = {}; obj.item1 = json[param1][param2][param3][param4]; obj.item2 = json[param1][param2][param3][param5]; obj.item3 = json[param1][param2][param3][param6]; stack.push(obj); } } }
Comments
Post a Comment