2011-10-12 9 views
10

Tengo una matriz de JavaScript, donde cada elemento nuevo agregado a la matriz obtiene el siguiente número incremental. Un ejemplo sería el siguiente (espero Im escribir esto correctamente):¿Cómo verificar si el valor existe en esta matriz de JavaScript?

ArrayofPeople[0] = [{"id": "529", "name": "Bob"}]; 
ArrayofPeople[1] = [{"id": "820", "name": "Dave"}]; 
ArrayofPeople[2] = [{"id": "235", "name": "John"}]; 

La matriz se llama ArrayofPeople, el almacenamiento de múltiples puntos de datos para cada persona.

Necesito saber si un elemento con id de 820 existe en la matriz o no. ¿Cómo se haría esto?

Respuesta

9

Algo como esto:

function in_array(array, id) { 
    for(var i=0;i<array.length;i++) { 
     return (array[i][0].id === id) 
    } 
    return false; 
} 

var result = in_array(ArrayofPeople, 235); 
+0

Esto parece funcionar para mí si es falsa, pero si es verdad que deja de funcionar por completo. ¿Qué estoy haciendo mal en este control ?: 'if (in_array (ArrayofPeople, 235) == true) {alert (" event was in array "); } else {alert ("not in array"); } ' – Oseer

+0

porque almacena los identificadores como una cadena que debe hacer' in_array (arrayofpeople, '235') 'o necesita quitar el" "de la propiedad id en la matriz –

+1

Wow, casi 4 años y nadie mencionó que esto el código no está funcionando! ¡El código solo verificará si la identificación del primer elemento es igual al id param! cambie el cuerpo del lazo interno a 'if (array [i] [0] id id ===) return true;' –

5

Usted debe iterar sobre la matriz y comprobar manualmente si tiene un identificador de juego:

function getPersonById(id){ 
    for(var i=0,l=ArrayofPeople.length;i<l;i++) 
     if(ArrayofPeople[0][i].id == id) 
      return ArrayofPeople[i]; 
    return null; 
} 

Por supuesto, esto es bastante ineficiente. Le sugiero que almacene sus objetos en una matriz asociativa (a.k.a., un objeto) indexada por la identificación de la persona. Entonces, el acceso a una persona con una cierta identificación es inmediata ya que los objetos no son más que tablas hash:

ArrayofPeople = {}; 
ArrayofPeople[529] = {"id": "529", "name": "Bob"}; 
ArrayofPeople[820] = {"id": "820", "name": "Dave"}; 
ArrayofPeople[235] = {"id": "235", "name": "John"}; 

function getPersonById(id){ 
    return id in ArrayofPeople 
     ? ArrayofPeople[id] 
     : null; 
} 
1
ArrayofPeople = new Array(); 
ArrayofPeople[0] = [{"id": "529", "name": "Bob"}]; 
ArrayofPeople[1] = [{"id": "820", "name": "Dave"}]; 
ArrayofPeople[2] = [{"id": "235", "name": "John"}]; 

var str = '820'; 
var is_found = 'not found'; 
for(item in ArrayofPeople){ 
    target = ArrayofPeople[item][0]; 
    if(target['id'] === str) 
     is_found = 'found'; 
} 
alert(is_found); 
2

Puede utilizar el relativamente nuevo Array.prototype.some() para encontrar si existe un artículo (se proporciona un calce en la documentación):

var ArrayofPeople = []; 
 
ArrayofPeople[0] = [{"id": "529", "name": "Bob"}]; 
 
ArrayofPeople[1] = [{"id": "820", "name": "Dave"}]; 
 
ArrayofPeople[2] = [{"id": "235", "name": "John"}]; 
 

 
function in_array(array, id) 
 
{ 
 
    return array.some(function(item) { 
 
     return item[0].id === id; 
 
    }); 
 
} 
 

 
console.log(in_array(ArrayofPeople, '820')); // true

0
function IsIdInArray(array, id) { 
    for (var i = 0; i < array.length; i++) { 
    if (array[i].id === id) 
     return true; 
    } 
    return false; 
} 

var result = IsIdInArray(ArrayofPeople, 820); 
Cuestiones relacionadas