[英]Incorrect value returns
我使用這個功能:
function search (){
v = [[2.0], [3.0], [4.0], [5.0]]
if(v.indexOf(2.0) != -1){
Logger.log ('if')
}else{
Logger.log('else')
}
}
編輯
我真正需要的是像這樣的詞的價值我得到了關於數字的回答,所以我沒有改變,只是添加了
function search (){
v = [["One"], ["two"], ["three"], ["four"]]
if(v.indexOf("One") != -1){
Logger.log ('if')
}else{
Logger.log('else')
}
}
而不是“if”返回給我,“else”返回給我。 我為蹩腳的英語道歉
您輸入的數組是一個multi
/ two
數組。 您正在搜索實際上嵌入在另一個較小數組中的2.0
。 嘗試將功能更改為以下。
function search() { v = [ ["One"], ["two"], ["three"], ["four"] ] if (v.findIndex(e => e[0] === 'One') != -1) { console.log('if') } else { console.log('else') } } search();
您有一個數組數組,因此嘗試在數組數組上使用indexOf
將不適用於您的情況。 一種選擇是結合使用flat
和some
將數組數組展平為一個數組,然后檢查是否在展平數組中找到該值:
function search (){ v = [[2.0], [3.0], [4.0], [5.0]]; if(v.flat().some((a) => a === 2.0)){ console.log('if'); }else{ console.log('else'); } } search();
你的意思是寫v = [2.0, 3.0, 4.0, 5.0];
?
因為那會打印出'if'
。 原因是在您的示例中, v
數組的每個元素都是它自己的數組。
如果您真的希望它是一個數組數組,那么要使其工作,您可以在if
語句中執行此操作:
if ( v.flat().includes(2.0) )
flat
將其從包含數字的數組數組轉換為數字數組。includes
是檢查數組是否包含值的更好方法 - 無需檢查索引:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.