javascript - 重构对象键以避免同义反复

标签 javascript javascript-objects

我有一个对象,用于获取元素的正确位置值。 如何优化这个对象以避免关键部门的同义反复?

目前我的对象如下所示:

function animPos(animName, position) {
    const availibleValues = {
        onLoadAnim: position,
        greetingAnim: position,
        textAnim: currentAnim === AnimRight ? 0 : 505,
        inputAnim: currentAnim === AnimRight ? 0 : 505,
        evaluationAnim: currentAnim === AnimRight ? 0 : 505,
        testAnim: currentAnim === AnimRight ? 0 : 505,
        passedAnim: currentAnim === AnimRight ? 0 : 505,
        default: 251.5,
    };
    return availibleValues[animName];
}

我不知道如何重构它。

最佳答案

要实现此目的,您可以使用 switch 语句:

var currentAnim = 1; // needed to make sample work
var AnimRight = 1;

function animPos(animName, position) {
  switch (animName) {
    // first group
    case "onLoadAnim":
    case "greetingAnim":
      return position;
    // second group
    case "textAnim":
    case "inputAnim":
    case "evaluationAnim":
    case "testAnim":
    case "passedAnim":
      return currentAnim === AnimRight ? 0 : 505;
  };
  // default
  return 251.5;
}

console.log("inputAnim    -> " + animPos("inputAnim", 15));
console.log("greetingAnim -> " + animPos("greetingAnim", 15));
console.log("unknown      -> " + animPos("unknown", 15));

关于javascript - 重构对象键以避免同义反复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55023800/

相关文章:

javascript - 如何更改每个点的圆弧中使用的描边样式?

JavaScript 将对象数组映射到新对象数组的最短方法?

javascript - 根据 Javascript 中 for 循环中生成的值过滤对象

javascript - TTS HTML5 音频事件监听器

javascript - 处理小数

javascript - 在 QTCreator C++ 控制台项目中包含 Google 的 V8 Javascript 引擎

javascript - 使用 require.js 加载非 amd 模块

javascript - 合并数组内多个对象的值

javascript - 使用 javascript oop 减少代码重复

javascript - 在对象 Javascript 中调用另一个方法中的方法时出错