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

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 有重复的值,后面的值会覆盖前面的值。

你可以使用按来控制精灵的翻转,以下是一种实现的方法: 1. 首先,确保你有一个精灵对象,可以是一个图片或者动画。 2. 给你的精灵对象添加一个属性,用于表示当前的朝向,比如可以使用一个布尔来表示是否面向右侧,默认为True表示面向右侧。 3. 监听盘事件,在用户按下指定的按时进行相应的翻转操作。 4. 当用户按下翻转时,改变精灵对象的朝向属性,并更新精灵对象的图像或者动画。 下面是一个简单的示例代码(使用Python和Pygame库): ```python import pygame # 初始化pygame和创建窗口 pygame.init() window = pygame.display.set_mode((800, 600)) # 加载精灵图片并获取初始位置 sprite_image = pygame.image.load('sprite.png') sprite_rect = sprite_image.get_rect() sprite_rect.center = (400, 300) # 精灵朝向,默认朝右 is_facing_right = True # 游戏主循环 running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # 监听盘事件 if event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE: # 按下空格翻转精灵 is_facing_right = not is_facing_right # 渲染精灵图像 if is_facing_right: window.blit(sprite_image, sprite_rect) else: # 翻转精灵图像 flipped_sprite = pygame.transform.flip(sprite_image, True, False) window.blit(flipped_sprite, sprite_rect) pygame.display.update() # 退出游戏 pygame.quit() ``` 这只是一个简单的示例,你可以根据自己的需求进行更复杂的操作和细节处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值