首页 > 解决方案 > 在开关情况下无法识别对象的属性

问题描述

我有一个

将对象作为输入的函数。这个对象总是看起来像:

{
title: "Gesso:",
categorical: "",
text: "",
classe: "Conduta",
type: 3
}

我作为输入的所有对象都具有此属性数字“类型”。根据它,我构建了另一个对象,它是函数的输出。举个例子:

如果 type=1 -> 我返回 {letter:input.a} 如果 type=2 -> 我返回 {letter:input.b}

对于这种情况,我使用如下 switch 语句(这是我遇到问题的函数):

   resposta(answer){
        let toReturn;
        switch(answer.type) {
            case 1:
                toReturn = {
                    resposta:answer.text,
                    obs: ''
                    };
                break;
            case 2:
                toReturn = {
                    resposta:answer.categorical,
                    obs: ''
                    };
                break;
            case 3:
                toReturn = {
                    resposta:answer.categorical,
                    obs:answer.text
                    };
                break;
            default:
                toReturn = {
                        resposta:'',
                        obs:''
                        };
                break;
            };

        return toReturn;
    };

我已经检查了正在传递的对象,它们都具有代码中的所有属性,包括 answer.type。

当我: console.log(answer.type === 1 || answer.type ===2 || answer.type ===3)我进入true所有的对象。

但是,由于某种原因,该函数总是返回默认情况,无论我将哪个答案对象传递给它。

function resposta(answer) {
  let toReturn;
  switch (answer.type) {
    case 1:
      toReturn = {
        resposta: answer.text,
        obs: ''
      };
      break;
    case 2:
      toReturn = {
        resposta: answer.categorical,
        obs: ''
      };
      break;
    case 3:
      toReturn = {
        resposta: answer.categorical,
        obs: answer.text
      };
      break;
    default:
      toReturn = {
        resposta: '',
        obs: ''
      };
      break;
  };

  return toReturn;
};

let ans = {
  title: "Gesso:",
  categorical: "dfasdfasz",
  text: "",
  classe: "Conduta",
  type: 3
}

console.log(resposta(ans))

标签: javascriptobjecttypesswitch-statement

解决方案


推荐阅读