迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 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 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便