我有一个 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/