Как вернуть значение без использования переключателя и если еще в javascript - PullRequest
0 голосов
/ 16 июня 2020

Я новичок в реакции. здесь у меня есть объект, у которого есть некоторые предопределенные значения. например,

{
    evalues: {
        status: {
            "statusVal": {
                "pre": "PRE",
                "buy": "BYE",
                "close": "CLOSE",
            }
        }
    }
}

Я пытаюсь вернуть другой значок с учетом статуса:

const getIcons = (givenStatus) =>
{
    let close = config?.appConfig?.evalues?.status?.statusVal.close
    let buy = config?.appConfig?.evalues?.status?.statusVal.buy
    let pre = config?.appConfig?.evalues?.status?.statusVal.pre

    if (givenStatus === close)
        return 'yellow'
    else if (givenStatus === buy)
        return 'green'
    else if (givenStatus === pre)
        return 'red'
}

Есть ли другой способ сделать это с помощью lodash?

Ответы [ 4 ]

0 голосов
/ 16 июня 2020

Пожалуйста, попробуйте этот код, Как вернуть значение без использования переключателя, а если еще, в javascript

function phoneticLookup(val) {
  var result = "";

  switch(val) {
    case "alpha": 
      result = "Adams";
      break;
    case "bravo": 
      result = "Boston";
      break;
    case "charlie": 
      result = "Chicago";
      break;
    case "delta": 
      result = "Denver";
      break;
    case "echo": 
      result = "Easy";
      break;
    case "foxtrot": 
      result = "Frank";
      break;
    default:
    result = '';
    break;

  }

  return result;
}

phoneticLookup("undefined");

Надеюсь, этот код будет вам полезен.

Спасибо .

0 голосов
/ 16 июня 2020

Может быть, вы могли бы использовать тернарный оператор, если вы не хотите использовать switch и if / else, например:

return givenStatus === "close" ? "yello" : givenStatus === "buy" ? "grenn" : givenStatus === "pre" ? "red" : null;

Вы можете сделать это короче, если уверены, что givenStatus может быть только любой из трех и никогда не бывает нулевым / пустым;

return givenStatus === "close" ? "yello" : givenStatus === "buy" ? "grenn" : "red";
0 голосов
/ 16 июня 2020

Вы можете использовать это, если хотите избежать switch и if..else

var statusVal =  {
        "pre": "PRE",
        "buy": "BYE",
      }
      
 var pre = 
(Object.values(statusVal).filter(i=>i === "PRE")).length ? 'yellow' : null;

var buy = (Object.values(statusVal).filter(i=>i === "BYE")).length ? 'grenn' : null;

var close = (Object.values(statusVal).filter(i=>i === "CLOSE")).length ? 'red' : null;
 
 
 console.log(pre);
  console.log(buy);
   console.log(close);
 
0 голосов
/ 16 июня 2020

Мы можем использовать деструктуризацию объекта, чтобы получить buy, close и pre все в одном операторе. С вашим текущим кодом это, вероятно, так чисто, как вы можете получить:

const getIcons = status =>
{
    const { buy, close, pre } = config.appConfig.evalues.status.statusVal

    if (status === buy)
        return 'green'
    if (status === close)
        return 'yellow'
    if (status === pre)
        return 'red'
}

Хотя, если значения гарантированы, вы можете вместо этого использовать оператор switch:

const getIcons = status =>
{
    switch (status)
    {
        case 'BYE':   return 'green'
        case 'CLOSE': return 'yellow'
        case 'PRE':   return 'red'
    }
}
...