2012-03-09 11 views
12

Tengo dos matrices que necesito verificar entre sí y si han alcanzado un punto donde ambos elementos en cada matriz son realmente iguales entre sí, a continuación, anexar algo de HTML en alguna parteA for-loop que compara dos matrices que buscan valores coincidentes

Éstos son algunos bits del código que he estado tratando como un ejemplo:

var daysArray = ["1", "2", "3", "4", "5"]; 
var courseHwork = ["4", "8", "15", "16", "23", "42"]; 

por lo que en las matrices anteriormente sólo hay un valor coincidente, siendo: "4"

aquí es la siguiente parte:

for (var i = 0; i < courseHwork.length; i++) { 
//in my actual code courseHwork contains several objects, each of which 
//has a duedate property, so here I want to see if this part of the duedate 
//property is equal to any position in the daysArray array. 
    if (courseHwork[i].duedate.substring(8,10) === daysArray[i]) { 
//here I mean to select an element of this class that contains a string 
//that is equal to that of the matching positions in both arrays. then 
//once found it should take the title property from one of the objects in the 
//courseHwork array and append it there. 
    $('.fc-day-number:contains("'+daysArray[i]+'")').append("<div class='assignment'>"+courseHwork[i].title+"</div><br />"); 
     } 
     } 

Si las cosas funcionaron como estaba previsto se habrá encontrado un div, que contiene la cadena "4" y anexa que la propiedad 'título' del objeto coincidente en la matriz courseHwork.

Nota: my real daysArray cubre números como cadenas "1" - "31", y la matriz de objetos courseHwork se llena dinámicamente para que pueda contener cualquier cantidad de objetos, sin embargo ningún objeto tendrá un valor de propiedad que exceda " 31 "en la subcadena que se encuentra.

* PREGUNTA: ¿Cómo puedo bucle a través de dos matrices y cada vez que los valores de juego se encuentran entre las dos matrices, se encuentra un elemento HTML que contiene además de que exactamente el mismo valor, entonces tiene algo anexado a él ? *

+0

Es posible que desee para buscar cómo se produce el paso de mezcla en una combinación de clasificar ... – Cameron

+2

uh - ¿cuál es la pregunta, exactamente? – Aprillion

+0

lo actualizó para incluir una pregunta más clara en la parte inferior. perdón por la confusion. – captainrad

Respuesta

13

Aquí es idea que ocurrió:

var daysArray = ["1", "2", "3", "4", "5", "12"]; 
var courseHwork = ["4", "8", "15", "16", "23", "42", "12"]; 

for (var i = 0; i < courseHwork.length; i++) { 
    for (var j = 0; j < daysArray.length; j++) { 
     if (courseHwork[i] == daysArray[j]) { 
      $('div:contains("'+daysArray[j]+'")').append("<div class='assignment'>"+courseHwork[i]+" - appended</div>"); 
     } 
    } 
} 

Se puede encontrar trabajo aquí: http://jsfiddle.net/4cqCE/2/

Bueno, comprobar si eso lo que quieres. Primero busca el MISMO valor en 2 matrices, y si lo encuentra, le agrega algo a div que contiene "4" en él. ¿Es eso lo que quieres?

Aquí hay un ejemplo con 2 valores iguales, con 2 divs, cada uno con uno de los valores. http://jsfiddle.net/4cqCE/3/

+0

¡Bien hecho! Lo tienes justo! ¡Gracias! – captainrad

+0

Me alegro de que me ayudó, aunque estaba usando matrices de ejemplo, no matrices de objetos como DeathApril notó que tienes. ¡Pero cambiar eso no debería ser un problema, espero! – Kedor

+0

¡Correcto, acabo de adaptarlo a los objetos y funciona genial! – captainrad

1

Creo que primero debe crear una array intersection y luego iterar sobre el resultado de hacer su cosa ...

+0

Underscore.js ofrece dicho método http://documentcloud.github.com/underscore/#intersection y muchos otros. – Tuan

3

se puede hacer algo como esto:

var daysArray = ["1", "2", "3", "4", "5"]; 
var courseHwork = ["4", "8", "15", "16", "23", "42"]; 

var arr = daysArray.concat(courseHwork); 
var sorted_arr = arr.sort(); 
var results = []; 
for (var i = 0; i < arr.length - 1; i++) { 
    if (sorted_arr[i + 1] == sorted_arr[i]) { 
     results.push(sorted_arr[i]); 
    } 
} 

console.log(results); 

puede ejecutar el código aquí: http://jsfiddle.net/WtEwJ/2/

Esto dará como resultado una nueva matriz results que solo contiene los elementos duplicados.

+1

de todas las respuestas aquí, esto tiene más sentido –

Cuestiones relacionadas