gpt4 book ai didi

javascript - 当在对象中指定自定义键时,它会将其转换为数字

转载 作者:行者123 更新时间:2023-12-01 02:52:55 26 4
gpt4 key购买 nike

当我在对象中实现基于字符串的数字作为键时,当呈现该对象时,它返回为数字而不是字符串。这让我很失望,因为我的原始数组被重新排序,然后我想基于一个数字生成一个对象,该数字是数组行中的 ID,但问题是,默认情况下,javascript 通过数字有序列表重新排序我的对象键,而不是我告诉它的顺序。

var array = ['1','2','3'].reverse();
var obj = {};
$.each(array, (idx, item) => {
obj[item.toString()] = item;
});

console.log(array, obj);

返回的是

(3) ["3", "2", "1"] {1: "1", 2: "2", 3: "3"}

而不是

(3) ["3", "2", "1"] {3: "3", 2: "2", 1: "1"}

但是,这对于非数字类型字符来说完全可以正常工作,如下所示:

var array = ['hi','tom','how'].reverse();
var obj = {};
$.each(array, (idx, item) => {
obj[item.toString()] = item;
});

console.log(array, obj);

按预期返回

(3) ["how", "tom", "hi"] {how: "how", tom: "tom", hi: "hi"}

最佳答案

by default, javascript is reordering my object keys by numerical ordered list, instead of the order i tell it to be in

对象属性未排序。有多种方法可以获取属性列表或迭代属性,但对于大多数方法来说,顺序取决于实现。但是,当前大多数浏览器将首先按升序迭代数字属性,然后按插入顺序迭代非数字属性。

如果您想要保证顺序,那么您应该使用Map,如其他答案中所述,因为映射维护插入顺序,或者继续使用数组来定义迭代顺序。

关于javascript - 当在对象中指定自定义键时,它会将其转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46859825/

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