2017-09-18 52 views
1

這個可能相當簡單,但我還沒有成功找到答案。無論如何,我想要做的是將一個值與一組其他值進行比較,如果匹配其中一個,則運行該腳本。以下是我想要做的詳細版本,它工作正常,但我假設有一個更聰明,不太詳細的方法來實現這一目標?在if語句中與其他許多其他值進行比較

function updatePosition(e) { 
    if((e.target.innerHTML == 1) || (e.target.innerHTML == 4) || 
     (e.target.innerHTML == 7)) { 
     console.log(e.target.innerHTML) 
    } 
} 
+2

由於'innerHTML'屬性是一個字符串,你需要將其轉換爲數字使用'indexOf'解決方案在鏈接的副本中:'if([1,4,7] .indexOf(+ e.target.innerHTML)!== -1)'。一元'+'運算符將值轉換爲數字。 – Ryan

+0

嘿@Ryan! e.target前面的優勢是什麼? – Argee

+0

@Argee:我的評論的一半或更多是描述什麼加號是 – Ryan

回答

-1

您可以將所有有效的比較存儲在數組中。然後您可以使用Array#Find()來獲得匹配的值。如果沒有匹配的值,你會得到undefined

function updatePosition(num) { 
 
    let validNumbers = [1,4,7]; 
 
    console.log(validNumbers.find(valid => valid === num)); 
 
} 
 

 
updatePosition(4); 
 
updatePosition(9);

+0

爲什麼在使用'includes'或'indexOf'時使用'find'?如果您將其用作問題需要的真實值,則這也會打破「0」值。 – Ryan

+0

@Ryan OP正在比較'e.target.innerHTML'。如果他找到了,他會在'console.log()'裏面使用'e.target.innerHTML'。使用find()允許OP直接使用該值,如果他找到它。 'includes'或'indexOf'只會告訴他他發現了它。 – Weedoze