2017-03-16 105 views
0

我試圖爲指定的i這些值的顏色藍色:3,4,22,24的JavaScript函數中的if語句

現在我的代碼如下

JS(paste0('function(z, i) { return i > 2 && i < 5 || i > 21 && i < 24 ? "blue" : "grey"; }')) 

有一種方式來實現在運營商相同的使用,如

JS(paste0('function(z, i) { return i in(3,4,22,23) ? "blue" : "grey"; }')) 

在此先感謝。

+0

號這不是[in'如何'作品(https://developer.mozilla.org/nl/docs/Web/JavaScript/Reference/Operators/in)。 – GolezTrol

回答

1

是的。通過這種方式:

JS(paste0('function(z, i) { return [3,4,22,23].indexOf(i) > -1 ? "blue" : "grey"; }')) 
+2

'[] .includes()'看起來更優雅 –

+0

這也是一個選項 –

0

解決方案1 ​​ - 我想指出,這不是由Internet Explorer和Opera支持,但是它與其他所有流行的瀏覽器兼容。有關兼容性的更多詳細信息,請查看MDN

JS(paste0('function(z, i) { return [3,4,22,23].includes(i) ? "blue" : "grey"; }')) 

溶液2 -

JS(paste0('function(z, i) { return [3,4,22,23].indexOf(i) > -1 ? "blue" : "grey"; }')) 
+0

includes()IE不支持https://developer.mozilla.org/id/docs/Web/JavaScript/Reference/Global_Objects/String/包括 –

+0

@ Gonzalo.-歡呼我會更新我的答案 –

0

可以使用Array.prototype.indexOf()以查看是否項指的是在陣列中。如果該項不在數組中,則這會給出-1;如果找到該項,則會給出索引。使用~位移運算符,如果項目不在給定數組中,我們將二進制-1向前移動以表示false。

function JSpaste0(z, i) { return ~[3,4,22,23].indexOf(i) ? "blue" : "grey"; } 
 

 
console.log(
 
    JSpaste0(null, 4), // blue 
 
    JSpaste0(null, 66) // grey 
 
)

0

是的,你可以使用in operator有一個合適的對象。

JS(paste0('function(z, i) { return i in { 3: 1, 4: 1, 22: 1, 23: 1 } "blue" : "grey"; }'))