2016-09-23 106 views
-2

我有這個例子,我可以如何讓它顯示正確的答案。 如果每個人都在線,那麼全局狀態爲在線。 如果有人離開,全局狀態就會消失。 如果每個人都離線 - >離線。如何得到正確的答案

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); 
} 

回答:這段代碼的優先級是Online> Away> Offline。

我更換了它,並按照我的要求工作:離線>離開>在線。

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); 
} 
+0

在第一個,如果你檢查,如果有一個人是'green'不'online' –

+0

嗨卡洛斯。確實,編輯了這個問題。 – Eugene

+0

那麼優先級是什麼?如果有人在線,無論其他情況如何,羣組狀態應該在線。只有其他部分應該離開或離線,團隊狀態纔會消失。那是對的嗎? – Vikash

回答

0

以下是我認爲你想做的事: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); 
+0

謝謝你的例子! – Eugene

0

你可以將所有的部件到一個數組中,並與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); 
 
}