问题描述
我有好恶,我试图找出两者的百分比。 问题是有时候没有好恶,所以我无法计算。 第二个问题是&&运算符不起作用。
.menu ul{
display: inline-flex;
margin: 50px;
font-family: 'Staatliches',cursive;
font-size: 25px;
}
.menu ul li{
list-style: none;
margin: 0 20px;
color: #1385d6;
cursor: pointer; }
解决方法
您可以将代码缩小为检查相同的值,包括两个零值和另一个用于计算百分比值的
if (likes === dislikes) {
setLikePercentage(50);
setDislikePercentage(50);
} else {
setLikePercentage((likes / (dislikes + likes)) * 100);
setDislikePercentage((dislikes / (dislikes + likes)) * 100);
}
,
您可以通过以下一般假设来简化事情:如果likes
和dislikes
都是相同的值,则它们都是50%。在所有其他情况下,您只想运行计算。
这样,您可以摆脱前3条if/else if
语句。我还假设likes
和dislikes
永远不会小于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,false
被视为虚假值。