Skip to content

Latest commit

 

History

History
48 lines (33 loc) · 1.1 KB

如何翻转对象中的键和值?.md

File metadata and controls

48 lines (33 loc) · 1.1 KB

如何翻转对象中的键和值?

for...in

for...in 以任意顺序遍历一个对象的除 Symbol 以外的可枚举属性。实现方法如下:

const user = {
  name: 'IU',
  age: 18,
  gender: '女'
}

const reversed = (obj) => {
  const res = {}
  for (key in obj) {
    res[obj[key]] = key
  }
  return res
}

console.log(reversed(user)) // {18: "age", IU: "name", 女: "gender"}

Object.entries

使用 Object.entries 将传入的对象转为一个数组,在使用 Array.prototype.reduce 反转对象的键和值。

const reversed = (obj) =>
  Object.entries(obj).reduce((acc, [k, v]) => ({ ...acc, [v]: k }), {})

console.log(reversed(user)) // {18: "age", IU: "name", 女: "gender"}

第三方库

如果你正好在使用第三方库,一些方法可能可以帮助到你。

使用第三方库如 Lodash,其中的 _invert(obj) 用于创建一个 obj 键值倒置后的对象。

const object = { a: 1, b: 2, c: 1 }

_.invert(object) // { '1': 'c', '2': 'b' }

注意:如果 obj 有重复的值,后面的值会覆盖前面的值。