ใน ES6 / ES2015 คุณสามารถรวมการใช้Object.keysและลดด้วยฟังก์ชันObject.assignใหม่ฟังก์ชันลูกศรและชื่อคุณสมบัติที่คำนวณสำหรับโซลูชันคำสั่งเดียวที่ตรงไปตรงมา
const foo = { a: 1, b: 2, c: 3 };
const bar = Object.keys(foo)
.reduce((obj, key) => Object.assign({}, obj, { [foo[key]]: key }), {});
หากคุณกำลังถ่ายโอนโดยใช้ตัวดำเนินการกระจายวัตถุ (ขั้นตอนที่ 3 เมื่อเขียนสิ่งนี้) สิ่งนี้จะทำให้สิ่งต่างๆง่ายขึ้นอีกเล็กน้อย
const foo = { a: 1, b: 2, c: 3 };
const bar = Object.keys(foo)
.reduce((obj, key) => ({ ...obj, [foo[key]]: key }), {});
สุดท้ายหากคุณมีObject.entries (ขั้นตอนที่ 4 ขณะเขียน) คุณสามารถล้างตรรกะได้มากขึ้น (IMO)
const foo = { a: 1, b: 2, c: 3 };
const bar = Object.entries(foo)
.reduce((obj, [key, value]) => ({ ...obj, [value]: key }), {});