📜  如何反转 JavaScript 对象中的键值?(1)

📅  最后修改于: 2023-12-03 15:24:05.266000             🧑  作者: Mango

如何反转 JavaScript 对象中的键值?

在某些情况下,我们需要对 JavaScript 对象中的键值进行反转。例如,有时我们需要将属性值作为键,属性名作为值,构建一个新对象。本文将介绍几种方法实现 JavaScript 对象键值反转。

方法一:使用 for...in 循环和对象解构赋值
const originalObj = {
  name: 'Alice',
  age: 25,
  gender: 'female'
};

const newObj = {};
for (const [key, value] of Object.entries(originalObj)) {
  newObj[value] = key;
}

console.log(newObj);
// 输出:{ Alice: 'name', 25: 'age', female: 'gender' }

在上面的代码中,我们使用 for...in 循环遍历原始对象,使用对象解构赋值将每个键值对存入一个数组 [key, value] 中。然后,我们将每个数组项中的值交换位置,将属性值作为新对象的键,属性名作为新对象的值。

方法二:使用 reduce()
const originalObj = {
  name: 'Alice',
  age: 25,
  gender: 'female'
};

const newObj = Object.entries(originalObj).reduce((acc, [key, value]) => {
  acc[value] = key;
  return acc;
}, {});

console.log(newObj);
// 输出:{ Alice: 'name', 25: 'age', female: 'gender' }

在上面的代码中,我们使用 Object.entries() 把原始对象转化为由键-值对组成的二维数组。然后,我们使用 reduce() 方法遍历数组,并使用对象解构赋值将每个数组项中的值存入变量 keyvalue 中。在每次迭代中,我们将属性值作为新对象的键,属性名作为新对象的值。字面量对象 {} 作为 reduce() 的初始值参数。

方法三:使用 Object.fromEntriesObject.entries()
const originalObj = {
  name: 'Alice',
  age: 25,
  gender: 'female'
};

const newObj = Object.fromEntries(
  Object.entries(originalObj).map(([key, value]) => [value, key])
);

console.log(newObj);
// 输出:{ Alice: 'name', 25: 'age', female: 'gender' }

在上面的代码中,我们使用 Object.entries() 把原始对象转化为由键-值对组成的二维数组。然后,我们使用 map() 方法遍历数组,并使用对象解构赋值将每个数组项中的值存入变量 keyvalue 中。在每次迭代中,我们用数组字面量 [value, key] 存储新的键-值对,将 value 作为新对象的键,key 作为新对象的值。最后,我们使用 Object.fromEntries() 把数组转化为一个新对象。

总结

本文介绍了三种方法实现 JavaScript 对象键值反转。这些方法都使用了对象解构赋值和 Object.entries() 方法。你可以按照自己的喜好,选择其中一种方法实现你的应用程序需求。