2016-09-23 8 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); 
} 

回答:このコードの優先度は、オンライン>オフ>オフラインです。

私は「オフライン>アウェイ>オンライン」のように置き換えて機能しました。ここで

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

関連する問題