JavaScript 中交换对象中的键和值
JavaScript 中交换对象中的键和值:
-
调用
Object.entries()
方法获取键值对数组 -
使用
map()
方法切换key和value的位置 -
将结果传递给
Object.fromEntries()
方法以获取具有交换键和值的对象。
function swapKeysAndValues(obj) {
// 👇️ [['color', 'blue'], ['fruit', 'apple']]
const swapped = Object.entries(obj).map(
([key, value]) => [value, key]
);
return Object.fromEntries(swapped);
}
// 👇️ {color: 'blue', fruit: 'apple'}
console.log(
swapKeysAndValues({blue: 'color', apple: 'fruit'})
);
第一步是使用 bject.entries
方法获取对象的键值对数组。
// 👇️ [['blue', 'color'], ['apple', 'fruit']]
console.log(Object.entries({blue: 'color', apple: 'fruit'}))
每个嵌套数组中的第一个元素是键,第二个是值。
我们使用 Array.map
方法交换数组中键和值的位置。
我们传递给 map()
方法的函数被数组中的每个元素(子数组)调用。
我们使用解构赋值来获取每个子数组的第一个和第二个元素。
const [key, value] = ['color', 'blue'];
console.log(key); // 👉️ "color"
console.log(value); // 👉️ "blue"
我们只需交换键和值的顺序并返回一个包含结果的新数组。
交换变量包含的最终值是一个数组数组,其中值位于索引 0 处,键位于索引 1 处。
最后一步是将数组传递给 Object.fromEntries
方法。
Object.fromEntries
方法采用键值对数组,将它们添加到对象并返回结果。
// 👇️ {blue: 'color', apple: 'fruit'}
console.log(
Object.fromEntries([
['blue', 'color'],
['apple', 'fruit'],
]),
);
通过 3 个步骤交换对象的键和值:
-
使用
Object.entries()
方法获取键值对数组。 -
使用
map()
方法交换每个键和值的位置。 -
使用
Object.fromEntries()
方法将键值对数组转换为对象。
另一种方法是从 map()
方法返回一个对象数组。
function swapKeysAndValues(obj) {
// 👇️ [{color: 'blue'}, {fruit: 'apple'}]
const swapped = Object.entries(obj).map(
([key, value]) => ({[value]: key})
);
return Object.assign({}, ...swapped);
}
// 👇️ {color: 'blue', fruit: 'apple'}
console.log(swapKeysAndValues({blue: 'color', apple: 'fruit'}));
我们从 map()
方法返回一个对象数组。 同样,我们切换每对的键和值。
这允许我们使用 Object.assign
方法将所有对象的属性复制到单个对象中。
我们使用扩展语法
...
从数组中解压值(对象)并将它们作为参数传递给Object.assign
方法。
Object.assign
方法采用的第一个参数是目标对象,下一个是源对象。 源对象的键值对被复制到目标对象。
相关文章
Do you understand JavaScript closures?
发布时间:2025/02/21 浏览次数:108 分类:JavaScript
-
The function of a closure can be inferred from its name, suggesting that it is related to the concept of scope. A closure itself is a core concept in JavaScript, and being a core concept, it is naturally also a difficult one.
Do you know about the hidden traps in variables in JavaScript?
发布时间:2025/02/21 浏览次数:178 分类:JavaScript
-
Whether you're just starting to learn JavaScript or have been using it for a long time, I believe you'll encounter some traps related to JavaScript variable scope. The goal is to identify these traps before you fall into them, in order to av
How much do you know about the Prototype Chain?
发布时间:2025/02/21 浏览次数:150 分类:JavaScript
-
The prototype chain can be considered one of the core features of JavaScript, and certainly one of its more challenging aspects. If you've learned other object-oriented programming languages, you may find it somewhat confusing when you start
如何在 JavaScript 中合并两个数组而不出现重复的情况
发布时间:2024/03/23 浏览次数:86 分类:JavaScript
-
本教程介绍了如何在 JavaScript 中合并两个数组,以及如何删除任何重复的数组。