如何检查布尔值是否作为字符串传递?

时间:2018-12-20 15:30:12

标签: javascript arrays if-statement

因此在下面的代码中,如果我以布尔代码的形式传递ancillaryProductInd,但是以字符串形式传递时,它将不起作用。以我的理解,以下代码仅应在我传递“ false”字符串值并将错误引发布尔值时起作用。知道这里的问题是什么吗?

main.ts

请求

var rxInfos = [{
  "ancillaryProductInd": "false",
  "indexID": "eyJrZXkiOiIEOHdpNUpNWmR3PT0ifQ=="
}]


function subQuestionsHandler(rxInfos, data) {
  const subQuestionArray = [];
  rxInfos.forEach((rxInfo) => {
    const subQuestion = {
      question: []
    };
    if (rxInfo.ancillaryProductInd !== undefined && rxInfo.ancillaryProductInd === "false") {
      subQuestion.question = data;
      subQuestionArray.push(subQuestion);
    }
  });
  return subQuestionArray;
}

subQuestionsHandler(rxInfos, [{
  some data
}]);

1 个答案:

答案 0 :(得分:0)

您的示例代码使用字符串值“ false”可以正常工作,并且在使用布尔值时不会运行if块。查看我的示例:

var rxInfos = [
  {
    ancillaryProductInd: "false",
    indexID: "eyJrZXkiOiIEOHdpNUpNWmR3PT0ifQ=="
  },
  {
    ancillaryProductInd: false,
    indexID: "eyJrZXkiOiIEOHdpNUpNWmR3PT0ifQ=="
  }
];

function subQuestionsHandler(rxInfos, data) {
  const subQuestionArray = [];
  rxInfos.forEach(rxInfo => {
    const subQuestion = {
      question: []
    };
    if (
      rxInfo.ancillaryProductInd !== undefined &&
      rxInfo.ancillaryProductInd === "false"
    ) {
      console.log("no error");
      subQuestion.question = data;
      subQuestionArray.push(subQuestion);
    } else {
      console.log("throw error");
    }
  });
  return subQuestionArray;
}

subQuestionsHandler(rxInfos, [
  {
    test: ""
  }
]);