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

相关问题