【发布时间】:2019-03-21 23:03:31
【问题描述】:
this question的扩展名
所以我正在玩一个项目,我发现自己需要创建一个字符串,其中我不知道刻字的确切顺序,但我确实知道它们的位置(并且通过扩展,这个长度字符串)。
这样做的部分原因是我不想在此过程中的任何时候跳过数组元素(NO ["a", , "t"] during the process)。这意味着插入的顺序很重要。
let string_length = 10;
let o = {
0: "a",
4: "q",
7: "t",
3: "p",
6: "h",
1: "z",
2: "t",
5: "a",
9: "b",
8: "z"
};
function obj_to_arr(o) {
// this returns ["a","z","t","p","q","a","h","t","z","b"]
}
到目前为止我找到的所有答案都不一定保证给定一个索引对象,它会给出相应的有序对象,这主要是因为对象的性质,是无序的。
有没有办法实现这个?
【问题讨论】:
-
Stack Overflow 通常更喜欢问题而不是陈述 ;-)
-
呼应一下……实际的问题是什么?
-
你的意思是内置的Object.keys()和Object.entries()函数?
-
如果插入顺序很重要,那么您在这里绝对使用了错误的数据结构。仅当您不关心键值顺序时才使用对象,因为规范确实 no 保证即使存在 is 顺序。这完全由 JIT 决定。一旦
let o存储在内存中,这些键就没有义务反映您写下的顺序,并且实际上很可能以排序方式存储,以便对象上的属性查找可以使用有效的解析算法。 -
元组是应该“保持在一起”的任何事物集合的通用名称,因此在这种情况下,您需要像
let properlist = [ {key: 0, value:a, {key: 4, value:q}, ...]这样的东西,现在您可以依赖于这样一个事实,即在您迭代时,键和值将始终具有相同的顺序。
标签: javascript arrays sorting object