2016-02-12 11 views
7
var userids = userbody.contacts.map(function(obj){ 

    if((obj.iAccepted=='true')&&(obj.contactAccepted=='true')) { 
    console.log(true); 
    return obj.userID //return obj.userID 
    } 

}); 

Questo darà il risultato come questo:Come posso saltare l'elemento di array .map?

[ '0', '35', '37', '30', '34', '36', '33 ', '32', indefinito, '332', '328', '337', '333', indefinito]

voglio ignorare gli elementi definiti nella matrice.

+0

non ritornano falso? – Shanoor

+0

il suo ritorno falso come un elemento, ma voglio saltare che ho bisogno di risultato come ['0', '35', '37', '30', '34', '36', '33', '32', "332", "328", "337", "333"] invece di ["0", "35", "37", "30", "34", "36", "33", "32" , false, '332', '328', '337', '333', false] –

+1

Possibile duplicato di [javascript salta elemento su .map()] (https://stackoverflow.com/questions/24806772/javascript- skip-element-on-map) –

risposta

16

Questo è ciò che è per Array.prototype.filter(). È necessario farlo in due passaggi.

var userids = userbody.contacts 
    .filter(contact => contact.iAccepted == 'true' && contact.contactAccepted == 'true') 
    .map(contact => contact.userId); 

La parte del filtro elimina tutti gli elementi non necessari, quindi esegue la conversione del resto nel modo desiderato.

+0

mi dà un errore "token non riconosciuto" –

+0

Stai usando un nodo.js deprecato? Funziona bene anche con node.js LTS v4.2.4 e in [jsbin] (http://jsbin.com/hudivipivu/edit?js,console). –

+0

No. /var/www/html/nodeproject/helloworld/index.js:270 .filter (contatto => contact.iAccepted == 'vero' && contact.contactAccepted ^ SyntaxError: token imprevisto> al modulo. _compile (module.js: 439: 25) in Object.Module._extensions..js (module.js: 474: 10) in Module.load (module.js: 356: 32) in Function.Module._load (module.js: 312: 12) in Function.Module.runMain (module.js: 497: 10) all'avvio (node.js: 119: 16) in node.js: 902: 3 –

0

Non sono sicuro se questo è quello che stai cercando:

var arr = [true,true,false,true,false]; 


var result = arr.map(function(val,ind,arr){ 

     if(val === !false){ 
      return val 
     } 
}) 

console.log(result) // true, true , true 

https://jsfiddle.net/horonv8a/

+0

non voglio per restituire il valore, ho bisogno di saltare quel valore che non corrisponde alla condizione in questo momento vera e al valore falso inserito nell'elemento array. –

0

È possibile filtrare i falsi valori:

userids = userids.filter((i) => i); 

Oppure, se non è possibile utilizzare le funzioni di direzione:

userids = userids.filter(function(i) { return i; }); 
+0

il mio valore non è come vero o falso è un valore numerico voglio rivedere quegli userID il cui valore contactaccepted o iaccepted è vero –

+0

In javascript, un numero diverso da 0 o una stringa non vuota è un valore "onesto": http://james.padolsey.com/javascript/truthy-falsey/ – Shanoor

+0

shan, per favore, prova a capire che ho un dato json che ha così tanti valori che viene realizzato contactaccepted true e ho accettato vero ora le cose che devo filtrare quegli ID che entrambi i valori della variabile sono veri. ho usato la funzione mappa per verificarlo. Il mio problema principale se il valore della condizione è vero, l'id ritorna nell'array ma se il valore della condizione è falso non voglio aggiungere alcun risultato in quel caso indefinito verrà aggiunto automaticamente nell'elenco che utilizzi return false ora resukt è come [ 34,56, falso, 74] ma non voglio ciò che voglio [34,56,74] nothinh ritornerà in un'altra istruzione –

Problemi correlati