返回三元条件 Javascript ES6



我正在编写一个函数,当它为真时应该返回数组,在假时应该返回一个字符串我首先是这样写的: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));

最新更新