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