迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 > JavaScript >

JavaScript 中交换对象中的键和值

作者:迹忆客 最近更新:2023/01/21 浏览次数:

JavaScript 中交换对象中的键和值:

  1. 调用 Object.entries() 方法获取键值对数组
  2. 使用 map() 方法切换key和value的位置
  3. 将结果传递给 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 个步骤交换对象的键和值:

  1. 使用 Object.entries() 方法获取键值对数组。
  2. 使用 map() 方法交换每个键和值的位置。
  3. 使用 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 方法采用的第一个参数是目标对象,下一个是源对象。 源对象的键值对被复制到目标对象。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

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 POST

发布时间:2024/03/23 浏览次数:96 分类:JavaScript

本教程讲解如何在不使用 JavaScript 表单的情况下发送 POST 数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便