safe-set sorting bug
- Lingua principale
- JavaScript
- Stelle
- 6.2k
- Fork
- 209
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
Hey folks,
I was using this library for a while in our OS project [inlang](https://inlang.com) no but I currently ran into an edge case that is pretty much breaking our usage for it.
## Description
If I use the`set` function and want to set an object with numbers as keys then they get sorted instead of leaving it in the parsed sequence.
## Minimal reproducable example
```javascript
import safeSet from "just-safe-set";
const testData = {
"test.test.0": "a",
"test.test.1": "b",
"test.test.11": "c",
"test.test.12": "d",
"test.test.2": "e",
"test.test.3": "f",
"test.test.4": "g",
"test.test.5": "h",
"test.test.6": "i",
"test.test.7": "j",
"test.test.8": "k",
"test.test.9": "l",
}
console.log("-- before safeSet --")
console.log(testData)
const obj = {};
Object.keys(testData).map((key, index) => {
safeSet(obj, key, testData[key]);
})
console.log("-- after safeSet --")
console.log(obj)
```
Logs:
```
-- before safeSet --
{
'test.test.0': 'a',
'test.test.1': 'b',
'test.test.11': 'c',
'test.test.12': 'd',
'test.test.2': 'e',
'test.test.3': 'f',
'test.test.4': 'g',
'test.test.5': 'h',
'test.test.6': 'i',
'test.test.7': 'j',
'test.test.8': 'k',
'test.test.9': 'l'
}
-- after safeSet --
{
test: {
test: {
'0': 'a',
'1': 'b',
'2': 'e',
'3': 'f',
'4': 'g',
'5': 'h',
'6': 'i',
'7': 'j',
'8': 'k',
'9': 'l',
'11': 'c',
'12': 'd'
}
}
}
```
## Expected behavior
I don't want it to be sorted. Because we us it as a part of a parse and serializing step it is super important that the output is always in the same order. Like that:
```
-- after safeSet --
{
test: {
test: {
'0': 'a',
'1': 'b',
'11': 'c',
'12': 'd',
'2': 'e',
'3': 'f',
'4': 'g',
'5': 'h',
'6': 'i',
'7': 'j',
'8': 'k',
'9': 'l'
}
}
}
```
Is that behavior intended? Do you plan to change that? Otherwise we would go on with a different solution?
Thanks folks, have a nice Friday:)
Guida per i contributori
Apri la guida per i contributori
Valutazione
Questa issue non è ancora stata valutata.