javascript - 如何正确处理对的数据类型切换

标签 javascript reactjs

假设我有以下列表

1: Peter,
2: Mary,
3: Ken
...

我想要一个函数switch,其返回如下

let value1 = switch("Peter") // return 1
let value2 = switch(3) // return "Ken"

我知道我可以创建一个像这样的愚蠢函数

const switch = (input) => {
  if(typeof(input) === string){...}
  else if(typeof(input) === number){...}
}

只是想知道是否有任何数据结构可以帮助做得更好,而不是创建用于存储这些对的对象

最佳答案

您可以使用Object.entries用于同时查找值和键

//cannot assign numbers as keys directly
const data = {
  "1": "Peter",
  "2": "Mary",
  "3": "Ken"
};

//`switch` is a programming language key for `switch/case`
//so I name the function `switchDataInPair` instead of `switch`
function switchDataInPair(input) {
  for (const [key, value] of Object.entries(data)) {
    //cannot use absolute check with `===`, because numbers are strings
    if (key == input) {
      return value
    }
    if (value == input) {
      return key
    }
  }
  return "Not defined"
}

console.log(switchDataInPair("Ken")) //3
console.log(switchDataInPair(1)) //"Peter"
console.log(switchDataInPair("Something")) //"Not defined"

关于javascript - 如何正确处理对的数据类型切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71731715/

相关文章:

javascript - React - Highcharts 全屏黑条

javascript - shouldComponentUpdate 的更好替代方案

javascript - 两种不同的 API 调用——计算汇率

javascript - 具有动态高度的 React Material-Ui 粘性表格标题

javascript - Prop 验证 react / Prop 类型中缺少

javascript - Apollo:数据/变异 Prop 未传递给组件

javascript - 将 chacha20-poly1305 与 Node 一起使用

JavaScript 正则表达式数字与包含单个零的字符串不匹配

javascript - 使用 JavaScript 更改 HTML 文件中加载的内容

javascript - 放在 map 上之前的谷歌地图圆针