javascript获取喜欢和不喜欢的百分比



我有喜欢和不喜欢的地方,我试着找出两者的百分比。问题是有时没有好恶,所以我无法计算。第二个问题是&运算符不起作用。。

if (likes == 0 && dislike == 0) {
setLikePercentage(50);
setDislikePercentage(50);
} else if (likes == 0) {
setLikePercentage(0);
setDislikePercentage(100);
} else if (dislikes == 0) {
setLikePercentage(100);
setDislikePercentage(0);
} else {
setLikePercentage((likes / (dislikes + likes)) * 100);
setDislikePercentage((dislikes / (dislikes + likes)) * 100);
}

有解决方案吗?

您可以将代码缩减为对相同值的检查,其中包括零值和另一个用于计算百分比值的值。

if (likes === dislikes) {
setLikePercentage(50);
setDislikePercentage(50);
} else {
setLikePercentage((likes / (dislikes + likes)) * 100);
setDislikePercentage((dislikes / (dislikes + likes)) * 100);
}

您可以通过假设likesdislikes都是相同的值,即它们是50%来简化事情。在所有其他场景中,您只需要运行计算。

这样,您就可以去掉前3个if/else if语句。我还假设likesdislikes永远不会小于0。

/**
* Main Calcation
*/
const doCalculation = (likes, dislikes) => {
likes = likes && likes > 0 ? likes : 0;
dislikes = dislikes && dislikes > 0 ? dislikes : 0;
if (likes === dislikes) { return { likes: 50, dislikes: 50 }; }
const total = likes + dislikes;
return {
likes: (likes / total) * 100,
dislikes: (dislikes / total) * 100
};
};
/**
* For event handling/presentation purposes
*/
const calculateLikes = () => {
const likes = document.getElementById('likes').value
const dislikes = document.getElementById('dislikes').value
const result = doCalculation(+likes, +dislikes);
document.getElementById('results').innerHTML = `
<div>Likes: ${result.likes}%</div>
Dislikes: ${result.dislikes}%
`;
};
// Events
document.getElementById('likes').addEventListener( 'keyup', calculateLikes );
document.getElementById('dislikes').addEventListener( 'keyup', calculateLikes );
<input placeholder="likes" id="likes" />
<input placeholder="dislikes" id="dislikes" />
<div id="results"></div>

在if条件之前添加这两行;

//check null status
likes = likes || 0;
dislikes = dislikes || 0;
if (likes == 0 && dislike == 0) {
...

||是布尔OR运算符。在javascript中,undefined, null, 0, false被认为是错误的值。

最新更新