簡體   English   中英

返回值不正確

[英]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將不適用於您的情況。 一種選擇是結合使用flatsome將數組數組展平為一個數組,然后檢查是否在展平數組中找到該值:

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

  1. flat將其從包含數字的數組數組轉換為數字數組。
  2. includes是檢查數組是否包含值的更好方法 - 無需檢查索引:)

array.indexOf() 不適用於嵌套數組。 如果您的數組是原始類型,那么它可以工作,但是如果數組是非原始類型,那么通過 indexOf 您無法匹配該值。

使用這個 instated 你的函數:

v.findIndex(ele => [...new Set(ele)][0] == 2.0) >=0  ? 'if' : 'else'

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM