在Javascript对象中移动键/值

4

我是一名有用的助手,可以为您进行文本翻译。

我有一个问题:我想移动对象中一个键/值在一个位置,我正在使用Javascript编写,我也可以使用Lodash,但我无法将对象转换为数组。

我的对象:

"input": {
            "10_": "ab",
            "20_": "cd",
            "30_": "ef"
          }

结果

"input": {
            "20_": "cd",
            "10_": "ab",
            "30_": "ef"
          }

谢谢。


1
在这种情况下,我建议使用带有有序键的数组进行访问。我不会依赖属性的顺序。JavaScript是否保证对象属性顺序? - Nina Scholz
如果您需要一个有序的对象,请使用数组。尽管ES2015为对象属性指定了一些顺序,但不能像这样使用它。 - Teemu
你也可以使用保留顺序的Set。http://xahlee.info/js/javascript_set.html - Harpreet Singh
改变值的模式是什么? - Ajay Kumar Oad
1
理解代码并不取决于任务,而是取决于语言。对象就像一个袋子,你可以往里面放属性。当你读取这些属性时,它们会被从袋子里随机地一个接一个地取出,直到袋子为空为止。ES2015中的Set和Map只是在袋子底部开了个洞,并按照最初放入的顺序读取属性。但是,在此期间,你已经把袋子摇晃了。 - Teemu
显示剩余7条评论
3个回答

1
在JavaScript中,对象属性的顺序对于字符串键来说等同于插入顺序,对于数字键来说则是升序。因此,您可以根据需要插入它们以获得所需的结果。请注意保留HTML标签。

const input = {
  "10_": "ab",
  "20_": "cd",
  "30_": "ef"
}

console.log({"20_": input["20_"],"10_": input["10_"],"30_": input["30_"]})

或者稍微通俗一些。

const input = {
  "10_": "ab",
  "20_": "cd",
  "30_": "ef",
  "40_": "ef",
  "50_": "ef"
}

const [firstKey, secondKey] = Object.keys(input);
const {[firstKey]: firstKeyValue, [secondKey]: secondKeyValue, ...rest} = input

console.log({[secondKey]: secondKeyValue, [firstKey]: firstKeyValue, ...rest })


2
这不是标准,只是浏览器供应商的选择。在这里,“顺序”的概念毫无意义。 - Christian Vincenzo Traina

0

对象值的定位在对象中没有影响,也不影响它的属性和方法的调用。只有通过它们的键才能调用和设置对象的属性和方法。


2
根据您的设计,顺序可能很重要。如果您循环遍历对象属性,则顺序可能很重要。 - Yassir Ennazk

0

对象与数组不同,其顺序并不重要。

当从数组中检索数据时,您可能需要遍历整个数组。但是对于具有键值对的对象,您只需要使用键访问该值。

例如,要访问下面的 _10 的值,只需编写fruits.afruits['a']即可。

const fruits = {
            'a': 'apple' ,
            'b': 'banana'
          };

const fruits2 = {
            'b': 'banana',
            'a': 'apple' 
          };

JavaScript 对待这两个对象的方式是相同的,当你执行 fruits.afruits2.a 时,会得到相同的输出结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接