簡體   English   中英

如何得到正確答案

[英]How to get correct answer

我有這個例子,我如何讓它顯示正確的答案。 如果每個人都在線,那么全局狀態就是在線。 如果有人離開,全球地位就消失了。 如果每個人都離線 -> 離線。

var group, part1, part2, part3;

group = 'Group Status';
part1 = 'online';
part2 = 'away';
part3 = 'offline';

if( part1 === 'online' || part2 === 'online' || part3 === 'online' ){
    group = 'Online';
    console.log('All users are online. Group status: ' + group);
}else if( part1 === 'away' || part2 === 'away' || part3 === 'away' ){
    group = 'Away';
    console.log('One of the users is away. Group status: ' + group);
}else if( part1 === 'offline' || part2 === 'offline' || part3 === 'offline' ){
    group = 'Offline';
    console.log('One of the users is offline. Group status: ' + group);
}else{
    group = 'Not found';
    console.log('Status not found. Group status: ' + group);
}

答:此代碼的優先級為在線>離開>離線。

我更換了它,它按我的意願工作:離線 > 離開 > 在線。

var group, part1, part2, part3;
group = 'Group Status';
part1 = 'online';
part2 = 'away';
part3 = 'away';


if( part1 === 'offline' || part2 === 'offline' || part3 === 'offline' ){
    group = 'Offline';
    console.log('One of the users is offline. Group status: ' + group);
}else if( part1 === 'away' || part2 === 'away' || part3 === 'away' ){
    group = 'Away';
    console.log('One of the users is away. Group status: ' + group);
}else if( part1 === 'online' || part2 === 'online' || part3 === 'online' ){
    group = 'Online';
    console.log('All users are online. Group status: ' + group);
}else{
    group = 'Not found';
    console.log('Status not found. Group status: ' + group);
}

這是我認為你想要做的: http : //es6fiddle.net/itfgy2xt/

它有助於為您的組部分使用數組,因此您可以使用數組方法,即Array.prototype.everyArray.prototype.indexOf 請注意, every都是 IE9+。

every返回true僅當對於每個元素的函數返回true ,和indexOf返回元素的索引陣列中或-1 ,如果該元素不能被發現。

var groupStatus  = 'Group Status',
    parts = [];

parts[0] = 'online';
parts[1] = 'away';
parts[2] = 'offline';

// check if everyone is online
if (parts.every(function (el) { return el === 'online'; })) {
    groupStatus = 'Online';
}
// check if at least someone is online or away
else if (parts.indexOf('online') >= 0 || parts.indexOf('away') >= 0) {
    groupStatus = 'away';
}
else {
    groupStatus = 'offline';
}

console.log('Group status: ' + groupStatus);

您可以將所有部分移動到一個數組中,並使用Array#someArray#every檢查所需狀態。

 var group = 'Group Status', parts = ['online', 'away', 'offline']; if (parts.some(function (a) { return a === 'offline'; })) { group = 'Offline'; console.log('One of the users is offline. Group status: ' + group); } else if (parts.some(function (a) { return a === 'away'; })) { group = 'Away'; console.log('One of the users is away. Group status: ' + group); } else if (parts.every(function (a) { return a === 'online'; })) { group = 'Online'; console.log('All users are online. Group status: ' + group); } else { group = 'Not found'; console.log('Status not found. Group status: ' + group); }

ES6

 var group = 'Group Status', parts = ['online', 'away', 'offline'], check = string => item => item === string; if (parts.some(check('offline'))) { group = 'Offline'; console.log('One of the users is offline. Group status: ' + group); } else if (parts.some(check('away'))) { group = 'Away'; console.log('One of the users is away. Group status: ' + group); } else if (parts.every(check('online'))) { group = 'Online'; console.log('All users are online. Group status: ' + group); } else { group = 'Not found'; console.log('Status not found. Group status: ' + group); }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM