gpt4 book ai didi

javascript - 当一些条目键是整数时,我可以保留 javascript 对象条目的顺序吗?

转载 作者:行者123 更新时间:2023-12-02 16:03:48 25 4
gpt4 key购买 nike

我正在处理一个对象,我需要在其中保留条目的顺序,即使一些是字母数字的,而另一些是整数。 (是的,我知道。)

我开始使用的对象如下所示:

{
a: 'the',
quick: 'quick',
b: 'brown',
fox: 'fox'
}

操作后,对象应该是这样的:

{
a: 'the',
0: 'quick',
b: 'brown',
1: 'fox'
}

但是。因为 javascript 对象中的迭代顺序 不同于插入顺序(首先迭代整数),如果我直截了本地解决这个问题,我不会得到正确排序的结果:

let myReindexedObject = {};

myReindexedObject['a'] = 'the';
myReindexedObject['0'] = 'quick';
myReindexedObject['b'] = 'brown';
myReindexedObject['1'] = 'fox';

console.log(myReindexedObject);

我试图通过构建一个 Map(与 object 不同,它保留输入顺序)来解决这个问题,然后我可以将其转换为 对象

Source: (I adapted this gist by Luke Horvat: Convert ES6 Map to Object Literal .)

你能猜出会发生什么吗?

let myMap = new Map();

myMap.set('a', 'the');
myMap.set('0', 'quick');
myMap.set('b', 'brown');
myMap.set('1', 'fox');

let myArray = Array.from(myMap);

let myReindexedObject = myArray.reduce((myReindexingObject, [key, value]) => {
return Object.assign(myReindexingObject, { [key]: value })
}, {});

console.log(myReindexedObject);

有什么方法可以使用基于整数的,例如01,并且仍然保留对象 以自定义顺序输入?

或者我需要考虑其他方法吗?

最佳答案

在写上面这个问题的过程中,我在打字的时候突然想到:

(integers are iterated first)

javascript 引擎识别为 integer 的东西和人类识别为数字的东西当然是不一样的。

对于任何人来说,这两个:

1

1.

在排版上并不相同,但它们几乎相同。

对于任何 javascript 解释器来说,它们是完全不同的:第一个是整数;第二个不是。


工作示例:

let myReindexedObject = {};

myReindexedObject['a'] = 'the';
myReindexedObject['0.'] = 'quick';
myReindexedObject['b'] = 'brown';
myReindexedObject['1.'] = 'fox';

console.log(myReindexedObject);


如果 javascript 解释器需要识别这些索引,它可以这样做,使用正则表达式:

/d+\./

而且,一旦识别出来,如果它需要知道 string 对应的整数,它可以使用:

parseInt(myIndex);

我现在将使用这种方法。

如果有人能提出更好的方法,我会很乐意投票并接受。

关于javascript - 当一些条目键是整数时,我可以保留 javascript 对象条目的顺序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69946683/

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