Return 三元条件 Javascript ES6

Return ternary condition Javascript ES6

我正在编写一个函数,当它为真时应该 return Array 并且当它为假时 string 我首先这样写: return (myArr != [])? myArr:`${integer} is prime`; 但是当 myArry 为空时,我收到的不是 ${integer} is prime,而是一个空的 arr [], 当我写return (myArr.length != [])? myArr:`${integer} is prime时,它起作用了,我不明白为什么?

在我的代码下方:

function divisors(integer) {
  var i = 2;
  var myArr = [];
  do {
    (integer % i) ? null : myArr.push(i);
    i++
  } while (i < integer);
  
  return (myArr != []) ? myArr : `${integer} is prime`;
}

console.log(divisors(42));

您无法测试数组 == [] 以查看它是否为空 - 请参阅对您的问题的评论

也许你是这个意思

function divisors(integer) {
  var myArr = Array.from(Array(integer),(x,i)=>i).filter(int => integer%int===0)
  return (myArr.length>1 && myArr[0] === 1) ? myArr : `${integer} is prime`;
}

console.log(divisors(42));
console.log(divisors(11));
console.log(divisors(12));
console.log(divisors(997));