Me gustaría saber cómo convertir una matriz de objetos jquery en objeto jquery.
En realidad, con find
de jQuery
Recupero varios elementos, find
devuelve un jQuery
objeto sobre el que aplico jQuery
método tal como clone
, css
...
En mi caso, al recuperar mis elementos, necesito eliminar duplicados. Lo hice, mis elementos ahora están en una matriz y no en una jQuery
objeto más
¿Cómo giro una matriz de jQuery
objetos en una jQuery
¿objeto?
A continuación está mi código:
var $enfants = $("#parent").find("option.enfant");
var keys = [];
var values = [];
$.each($enfants, function(i, e) {
if (-1 !== $.inArray($(e).val(), keys) ) {
keys.push($(e).val());
values.push($(e));
}
});
// This lasts 1ms
// $enfants.clone().appendTo($("#inconnu"));
// This lasts 14ms
// $.each(values, function(i, e) {
// $(e).clone().appendTo($("#inconnu"));
// });
Espero que esté claro
ACTUALIZACIÓN1
El código anterior funciona bien pero es más lento que sin eliminar duplicados
Respuestas
0 para la respuesta № 1Prueba esto, ya que el values
La matriz ya es "única". Tenga en cuenta el cambio de empujar e
en lugar de $(e)
dentro values
var $enfants = $("#parent").find("option.enfant");
var keys = [];
var values = [];
$.each($enfants, function(i, e) {
if (-1 !== $.inArray($(e).val(), keys) ) {
keys.push($(e).val());
values.push(e);
}
});
$(values).clone().appendTo($("#inconnu"));
1 para la respuesta № 2
Utilizar filter()
y mantenerlos en el objeto jQuery desde el principio y hacer todo en un bucle
$enfants.filter(function(){
if (-1 !== $.inArray(this.value, keys) ){
keys.push(this.value);
return true;
}
}).clone().appendTo($("#inconnu"));