gpt4 book ai didi

JavaScript:指定对象中属性的顺序

转载 作者:行者123 更新时间:2023-11-28 19:19:17 24 4
gpt4 key购买 nike

好的。我一直在查看提供的答案,它们似乎都非常具体。我需要从一般意义上了解这一点。

问题

我有几个 JS 对象。我用JSON.stringify比较它们(看看某个对象是否“脏”)。

但是,stringify 完全按照内存中设置的方式呈现对象,因此它采用该对象的属性恰好处于的任何顺序。

如果我删除一个属性,然后恢复它,这可能会改变顺序。

稍后我将展示一个简单的 HTML 示例。我想要的是 RESTORE 部分看起来与 BEFORE 部分完全相同。

我想知道是否有一种基本的、浏览器通用的方法可以做到这一点。

示例

<html>
<head><title>Test JS</title></head>
<body>
<dl>
<dt><strong><big>BEFORE:</big></strong></dt>
<dd><em><strong>Object A:</strong> <span id="objA1"></span></em></dd>
<dd><em><strong>Object B:</strong> <span id="objB1"></span></em></dd>
<dt><strong><big>AFTER:</big></strong></dt>
<dd><em><strong>Object A:</strong> <span id="objA2"></span></em></dd>
<dd><em><strong>Object B:</strong> <span id="objB2"></span></em></dd>
<dt><strong><big>RESTORE:</big></strong></dt>
<dd><em><strong>Object A:</strong> <span id="objA3"></span></em></dd>
<dd><em><strong>Object B:</strong> <span id="objB3"></span></em></dd>
</dl>
<script type="text/javascript">
var objA, objB;

function setUpObjects ( ) {
objA = new Object;
objB = new Object;

objA.someProperty = 'HIHOWAYA';
objB.someProperty = 'HIHOWAYA';
objA.someOtherProperty = 'JUSTFINETHX';
objB.someOtherProperty = 'JUSTFINETHX';
};

function deleteAProperty ( ) {
delete objA.someProperty;
};

function restoreAProperty ( ) {
objA.someProperty = 'HIHOWAYA';
};

function displayObjects ( inIndex ) {
document.getElementById ( 'objA' + inIndex.toString() ).innerHTML = JSON.stringify ( objA );
document.getElementById ( 'objB' + inIndex.toString() ).innerHTML = JSON.stringify ( objB );
};

setUpObjects();
displayObjects ( 1 );
deleteAProperty();
displayObjects ( 2 );
restoreAProperty();
displayObjects ( 3 );

</script>
</body>
</html>

最佳答案

Javascript 对象 - 就像大多数基本的哈希表数据结构 - 不保证其键的顺序:您不应该依赖您凭经验观察到的任何顺序。如果您想以稳健、可预测的顺序迭代属性,则必须使用其他一些数据结构(例如键数组)来补充对象。

关于JavaScript:指定对象中属性的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29182609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com