tu error es creer que por cada checkbox requieres un if, por eso te duplica datos... tienes que juntar todo en un solo IF
Código Javascript
:
Ver originalvar chk_deportes = document.suscripcion.deportes.checked;
var chk_noticias = document.suscripcion.noticias.checked;
var chk_economia = document.suscripcion.economia.checked;
for(i=0;i<datos.length;i++){
deportes = datos[i][0].indexOf(txtDeportes)>=0
noticias = datos[i][1].indexOf(txtNoticias)>=0
economia = datos[i][2].indexOf(txtEconomia)>=0
if ((chk_deportes && deportes) || (chk_noticias && noticias) || (chk_economia && economia)) {
encontrados.push(datos[i]);
}
}
como comentario:
no veo la finalidad de usar esto
deportes = datos[i][0].indexOf(txtDeportes)>=0
noticias = datos[i][1].indexOf(txtNoticias)>=0
economia = datos[i][2].indexOf(txtEconomia)>=0
al usar un array de arrays con ese codigo das por entendido que conoces la estructura y por ejemplo la posición 0 siempre tendrá deportes
es mas fácil y rápido datos[i][0] == "deportes" o bien datos[i][0] != "NO"
algo mas util y dinámico es que en tu formulario tus input fueran un Array
<input type="checkbox" name="tag[]" value="deportes" />
y hacer uso de
https://developer.mozilla.org/es/doc...s/Array/filter