/ / Convertir una matriz de objetos jquery en un conjunto jquery - javascript, jquery

Convertir una matriz de objetos jquery en un conjunto jquery - javascript, jquery

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 № 1

Prueba 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"));