vsphere vcenter update for esxi enable javascript

javascript - vcenter - vsphere web client 6.5 download



JavaScript está en matriz (14)

Use Underscore.js

Es compatible con varios navegadores y puede realizar una búsqueda binaria si sus datos están ordenados.

Underscore.js

_.indexOf (array, value, [isSorted]) Devuelve el índice en el que se puede encontrar el valor en la matriz, o -1 si el valor no está presente en la matriz. Utiliza la función indexOf nativa a menos que falte. Si está trabajando con una matriz grande y sabe que la matriz ya está ordenada, pase true para isSorted para usar una búsqueda binaria más rápida.

Example

//Tell underscore your data is sorted (Binary Search) if(_.indexOf([''2'',''3'',''4'',''5'',''6''], ''4'', true) != -1){ alert(''true''); }else{ alert(''false''); } //Unsorted data works to! if(_.indexOf([2,3,6,9,5], 9) != -1){ alert(''true''); }else{ alert(''false''); }

Digamos que tengo esto:

var blockedTile = new Array("118", "67", "190", "43", "135", "520");

Hay más elementos de matriz, pero son pocos para fines de legibilidad. De todos modos, podría hacer un bucle "para" pero haría 500 bucles cada vez que haga clic en el mapa ... ¿hay alguna otra manera de ver si una cierta cadena está en una matriz?


¿Por qué no usas Array.filter?

var array = [''x'',''y'',''z'']; array.filter(function(item,index,array){return(item==YOURVAL)}).

Solo copia eso en tu código, y aquí tienes:

Array.prototype.inArray = function (searchedVal) { return this.filter(function(item,index,array){return(item==searchedVal)}).length==true }


Algunos navegadores son compatibles con Array.indexOf() .

De lo contrario, podría aumentar el objeto Array través de su prototipo, por lo que ...

if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(searchElement /*, fromIndex */) { "use strict"; if (this === void 0 || this === null) throw new TypeError(); var t = Object(this); var len = t.length >>> 0; if (len === 0) return -1; var n = 0; if (arguments.length > 0) { n = Number(arguments[1]); if (n !== n) // shortcut for verifying if it''s NaN n = 0; else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) n = (n > 0 || -1) * Math.floor(Math.abs(n)); } if (n >= len) return -1; var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); for (; k < len; k++) { if (k in t && t[k] === searchElement) return k; } return -1; }; }

Source


Como se mencionó anteriormente, si su navegador es compatible con indexOf() , ¡genial! Si no es así, debe analizarlo o usar un cinturón de herramientas como lodash / guión bajo .

Solo quería agregar esta nueva adición de ES2016 (para mantener esta pregunta actualizada):

Array.prototype.includes()

if (blockedTile.includes("118")) { // found element }


Dependiendo de la versión de JavaScript que tenga disponible, puede usar Array.indexOf() :

Devuelve el primer índice en el que se puede encontrar un elemento determinado en la matriz, o -1 si no está presente.

O some :

Comprueba si algún elemento de la matriz supera la prueba implementada por la función proporcionada.

Pero si estás haciendo este tipo de comprobación de existencia, sería mejor utilizar un Objeto para almacenar tus cadenas (o tal vez un objeto, así como la Matriz, dependiendo de lo que estés haciendo con tus datos).


En mi humilde opinión, es más compatible con los navegadores más antiguos

Array.prototype.inArray = function( needle ){ return Array(this).join(",").indexOf(needle) >-1; } var foods = ["Cheese","Onion","Pickle","Ham"]; test = foods.inArray("Lemon"); console.log( "Lemon is " + (test ? "" : "not ") + "in the list." );

Al convertir una copia de Array en una cadena de CSV, puede probar la cadena en buscadores anteriores.


Prueba esto:

if(blockedTile.indexOf("118") != -1) { // element found }


Puedes probar el siguiente código. Compruebe http://api.jquery.com/jquery.grep/

var blockedTile = new Array("118", "67", "190", "43", "135", "520"); var searchNumber = "11878"; arr = jQuery.grep(blockedTile, function( i ) { return i === searchNumber; }); if(arr.length){ console.log(''Present''); }else{ console.log(''Not Present''); }

compruebe arr.length si es más de 0 significa que la cuerda está presente, de lo contrario no está presente.


Solo use para su gusto:

var blockedTile = [118, 67, 190, 43, 135, 520]; // includes (js) if ( blockedTile.includes(118) ){ console.log(''Found with "includes"''); } // indexOf (js) if ( blockedTile.indexOf(67) !== -1 ){ console.log(''Found with "indexOf"''); } // _.indexOf (Underscore library) if ( _.indexOf(blockedTile, 43, true) ){ console.log(''Found with Underscore library "_.indexOf"''); } // $.inArray (jQuery library) if ( $.inArray(190, blockedTile) !== -1 ){ console.log(''Found with jQuery library "$.inArray"''); }

<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


Utilizaría una estructura de datos diferente, ya que la matriz no parece ser la mejor solución.

En lugar de una matriz, usa un objeto como una tabla hash, de esta forma:

(publicado también en jsbin )

var arr = ["x", "y", "z"]; var map = {}; for (var k=0; k < arr.length; ++k) { map[arr[k]] = true; } function is_in_map(key) { try { return map[key] === true; } catch (e) { return false; } } function print_check(key) { console.log(key + " exists? - " + (is_in_map(key) ? "yes" : "no")); } print_check("x"); print_check("a");

Salida de la consola:

x exists? - yes a exists? - no

Esa es una solución directa. Si está más interesado en un enfoque orientado a objetos, busque en Google "hashtable js" .


en el ejemplo de matriz, es lo mismo en php (in_array)

var ur_fit = ["slim_fit", "tailored", "comfort"]; var ur_length = ["length_short", "length_regular", "length_high"]; if(ur_fit.indexOf(data_this)!=-1){ alert("Value is avail in ur_fit array"); } else if(ur_length.indexOf(data_this)!=-1){ alert("value is avail in ur_legth array"); }


function in_array(needle, haystack){ var found = 0; for (var i=0, len=haystack.length;i<len;i++) { if (haystack[i] == needle) return i; found++; } return -1; } if(in_array("118",array)!= -1){ //is in array }


if(array.indexOf("67") != -1) // is in array


var myArray = [2,5,6,7,9,6]; myArray.includes(2) // is true myArray.includes(14) // is false