在一行中{if>返回

时间:2017-03-31 14:14:07

标签: javascript

我有一个带4个参数的函数。

function fillTheText (selector, arrText, arrEl, j) {
  if (j >= 0) {
    return document.querySelector(selector + [j]).innerHTML = arrText[arrEl][j];
  } else {
    return document.querySelector(selector).innerHTML = arrText[arrEl];
  }
}

上述函数被调用三次

function startQuiz (question) {
  fillTheText('#question', question[i], 'text');
  for (let j = 0; j < question[i].choices.length; j++) {
    fillTheText('#choice', question[i], 'choices', j)
  }
}

我想进行更改,以便fillTheText返回单行,但不知道如何使[j]成为可选项。我尝试了有条件(三元)运算符,但没有成功。

2 个答案:

答案 0 :(得分:4)

我认为不是一条线,但仍然是一种改进。

function fillTheText (selector, arrText, arrEl, j) {
  var selector = j >= 0 ? selector + [j] : selector;
  var value = j >= 0 ? arrText[arrEl][j] : arrText[arrEl];

  document.querySelector(selector).innerHTML = value;
}

或者,或许,这个

function fillTheText (selector, arrText, arrEl, j) {
  var value = arrText[arrEl];

  if (j >= 0) {
    selector = selector + [j];
    value = value[j];
  }

  document.querySelector(selector).innerHTML = value;
}

答案 1 :(得分:2)

使用ternary operator

j>=0表示j的值为0或更大。

三元运算符

语法:condition?true:false

如果条件为真,?之后的部分将执行:之后执行的部分

function fillTheText (selector, arrText, arrEl, j) {
    return (typeof j==typeof 123 && j>=0) ? document.querySelector(selector + [j]).innerHTML = arrText[arrEl][j] : document.querySelector(selector).innerHTML = arrText[arrEl];
 }