【问题标题】:Re-arrange the position of the object using Javascript / lodash使用Javascript / lodash重新排列对象的位置
【发布时间】:2019-02-13 16:58:26
【问题描述】:

在我的 Angular 项目中,我有如下对象数组。我需要使用 javascript / lodash 重新排列对象的位置 有人帮我吗?

Response (Array of Object):
[
   { 'name': 'MMK', 'desc': 'test descritpion', 'hrcode': 'EMP001' },
   { 'name': 'SSK', 'desc': 'test descritpion', 'hrcode': 'EMP002' },
   { 'name': 'AAK', 'desc': 'test descritpion', 'hrcode': 'EMP002' },
]

在这里,我得到了上述响应,应该更改键的顺序,而不是值。

期望值

[
       { 'hrcode': 'EMP001', 'name': 'MMK', 'desc': 'test descritpion' },
       { 'hrcode': 'EMP002', 'name': 'SSK', 'desc': 'test descritpion'  },
       { 'hrcode': 'EMP002', 'name': 'AAK', 'desc': 'test descritpion'  },
    ]

【问题讨论】:

  • 对象键顺序无关紧要 - 对象是无序的
  • js objects are unordered。但是您可以遍历对象并根据您的偏好对它们的键进行排序,然后按照您定义的顺序访问这些值。
  • OP 的问题:为什么要按键排序对象?如果提供更多细节,也许我们可以提出更好的解决方案
  • 我需要生成TXT文件,它应该有特定的顺序。我正在使用 anguar2-txt npm 来转换 TXT 文件。

标签: javascript angular


【解决方案1】:

简短的回答是你不能。对象具有不确定的顺序 - 即使在您一遍又一遍地运行项目时它通常看起来很稳定,但您不应该依赖它们的顺序。

如果您出于某种原因确实想以特定顺序遍历对象键,您可以按您想要的顺序创建一个包含键的数组,然后遍历该数组。类似于以下内容:

var response = {... your object ...}
var keyOrder = ['hrcode', 'name', 'desc'];
keyOrder.forEach(key => {
  console.log(key, 'response:', response[key]);
});

不知道为什么要按这个顺序排列,我无法举出更好的例子。

【讨论】:

    猜你喜欢
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    相关资源
    最近更新 更多