Yo uso esta función:
function search (){ v = [[2.0], [3.0], [4.0], [5.0]] if(v.indexOf(2.0) != -1){ Logger.log ('if') }else{ Logger.log('else') } }edición
Mi verdadera necesidad está en los valores de palabras como esta. Me respondieron sobre números, así que no cambié y solo agregué.
function search (){ v = [["One"], ["two"], ["three"], ["four"]] if(v.indexOf("One") != -1){ Logger.log ('if') }else{ Logger.log('else') } }Y en lugar de "si" vuelve a mí, "si no" vuelve a mí. Me disculpo por el inglés roto.
Su matriz de entrada es una matriz multi / two . Está buscando 2.0 que en realidad está incrustado dentro de otra matriz más pequeña. Intente cambiar la función a continuación.
function search() { v = [ ["One"], ["two"], ["three"], ["four"] ] if (v.findIndex(e => e[0] === 'One') != -1) { console.log('if') } else { console.log('else') } } search();¿Quiso escribir v = [2.0, 3.0, 4.0, 5.0]; ?
Porque eso imprimirá 'if' . La razón es que en su ejemplo, cada elemento de la matriz v es una matriz propia.
Si realmente desea que sea una matriz de matrices, entonces para que funcione, puede hacer esto en la instrucción if :
if ( v.flat().includes(2.0) )
flat lo convierte de una matriz de matrices que contienen un número, a una matriz de números.includes es un método más agradable para verificar si la matriz contiene un valor; no es necesario verificar el índice :)array.indexOf() no es aplicable para matrices anidadas. Si su matriz es de tipos primitivos, entonces está funcionando, pero si la matriz es de tipos no primitivos, a través de indexOf no puede hacer coincidir el valor.
Use esto instalado de su función:
v.findIndex(ele => [...new Set(ele)][0] == 2.0) >=0 ? 'if' : 'else'