0
我試圖根據某些定義更改對象的屬性或按鍵的順序。我發現,儘管這些變化仍然在功能範圍內,但它們會在外面恢復。我寫了一個簡單的代碼來證明這一點:更改javascript中某個對象的鍵/屬性的順序?
function changeOrder(obj) {
let keys = Object.keys(obj);
let reversedObj = new Object;
for (let key = keys.length; key >0; key--) {
reversedObj[keys[key-1]] = obj[keys[key - 1]];
}
console.log("revered object: "); console.log(reversedObj)
obj = reversedObj;
console.log("reversing original object: ");console.log(obj)
}
a = { u: { x: 1, y: 2}, v : { x: 3, y: 4} }
changeOrder(a);
console.log("original object outside function: ");
console.log(a)
這是結果我得到:
revered object:
Object { v: Object, u: Object }
reversing original object:
Object { v: Object, u: Object }
original object outside function:
Object { u: Object, v: Object }
我證實任何改變我在函數內部reversedObj的任何財產確實是在複製外面的對象。但爲什麼訂單不被維護?
謝謝。您的解決方案有效,但我找到了另一種解決方法。我發現如果你返回並將它分配給原始對象,即obj = changeOrder(obj),你可以維護reveresedObj。 – amp