índice de la búsqueda de una entrada ... MovieClip.name == "foo" debería arrojar un error de compilación, ya que MovieClip no tiene una propiedad "nombre" ... myMovieClip.name == "foo" será true, y luego obtendrá el índice verdadero, si está en la matriz en absoluto ...
si realmente necesita el índice, tendrá que iterar sobre la matriz ... por la tecla ... o en un bucle incremental, si la matriz es numérica y densa ... si la matriz es asociativa (claves de cadena utilizado) que imperativamente necesario utilizar para-en bucles, ya que las funciones de filtro y hace referencia únicamente cubrirán los índices numéricos ...
en una matriz numérica, me gustaría sugerir uno de los dos métodos siguientes:
//this will return an array of all indices
myArray.map(function (val:*,index:int,...rest):int { return (val.name == "foo") ? index : -1 }).filter(function (val:int,...rest):Boolean { return val != -1 });
//here a more reusable utility function ... you may want to put it to some better place ... just as an example ...
package {
public class ArrayUtils {
public static function indexOf(source:Array, filter:Function, startPos:int = 0):int {
var len:int = source.length;
for (var i:int = startPos; i < len; i++)
if (filter(source[i],i,source)) return i;
return -1;
}
}
}
//and now in your code:
var i:int = ArrayUtils.indexOf(myArray, function (val:*,...rest):Boolean { return val.name == "foo" });
esperanza que ayudó ...;)
greetz
back2dos
No es realmente una respuesta, ¿eh? –
La pregunta original, "Ambos indexOf() de arriba no funcionan", pero estoy diciendo que el error que causó el indexOf falló – Unreality