JavaScript 对给定属性数组的对象属性重新排序

标签 javascript arrays object

我有一个 JavaScript 对象,例如:

{
  a: 3,
  b: 10,
  c: 2,
  d: 7,
}

我有一个包含属性名称字符串表示形式的数组:

[ "c", "b", "a", "d" ]

如何重新排列我的对象,以便属性按照与数组中相同的顺序排列,例如:

{
  c: 2,
  b: 10,
  a: 3,
  d: 7,
}

最佳答案

尽管 ECMAScript-6 改进了该功能,但众所周知,对象属性仍然是无序的。解决此问题的一种方法是使用记住原始键插入顺序的 Map。

    const obj = { a: 3, b: 10, c: 2, d: 7 };
const arr = ["c", "b", "a", "d"];

const res = new Map(arr.map(e => [e, obj[e]]));

for (let [key, value] of [...res]) {
  console.log(key, value);
}

(for...of 循环只是为了显示实际的 map ,因为它们不会显示在 Stack Snippets 控制台上。)

关于JavaScript 对给定属性数组的对象属性重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57310552/

相关文章:

javascript - 我可以使用验证函数在 span id 标记内输出错误消息吗?

javascript - 本季度的第几周,使用 javascript

javascript - 使用 Lodash 从集合中查找重复值

c++ - 复制二维数组 C++

javascript - 通过在弹出窗口外单击来隐藏弹出窗口

arrays - 在处于状态的数组中插入值 - React

ios - 从对象创建循环转换为在对象创建之间等待的 runBlock

JavaScript 多实例

c++ - 对类成员线程的双冒号访问 (::) 是否安全?

java - getParameters 不断返回 null