📅  最后修改于: 2023-12-03 15:24:05.266000             🧑  作者: Mango
在某些情况下,我们需要对 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()
方法遍历数组,并使用对象解构赋值将每个数组项中的值存入变量 key
和 value
中。在每次迭代中,我们将属性值作为新对象的键,属性名作为新对象的值。字面量对象 {}
作为 reduce()
的初始值参数。
Object.fromEntries
和 Object.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()
方法遍历数组,并使用对象解构赋值将每个数组项中的值存入变量 key
和 value
中。在每次迭代中,我们用数组字面量 [value, key]
存储新的键-值对,将 value
作为新对象的键,key
作为新对象的值。最后,我们使用 Object.fromEntries()
把数组转化为一个新对象。
本文介绍了三种方法实现 JavaScript 对象键值反转。这些方法都使用了对象解构赋值和 Object.entries()
方法。你可以按照自己的喜好,选择其中一种方法实现你的应用程序需求。