2016-02-12 15 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 
    } 

}); 

Daje to wynik takiego:Jak mogę pominąć element tablicy .map?

[ '0', '35', '37', '30', '34', '36', '33 ” '32', niezdefiniowane '332', '328', '337', '333', nieokreślone]

że chce przejść niezdefiniowane elementy tablicy.

+0

Nie return false? – Shanoor

+0

zwraca false jako element, ale chcę pominąć, że potrzebuję wyniku jako ['0', '35', '37', '30', '34', '36', '33', '32', "332", "328", "337", "333"] zamiast ["0", "35", "37", "30", "34", "36", "33", "32" , false, '332', '328', '337', '333', false] –

+1

Możliwy duplikat [elementu javascript skip na .map()] (https://stackoverflow.com/questions/24806772/javascript- skip-element-on-map) –

Odpowiedz

16

To co Array.prototype.filter() jest. Musisz to zrobić w dwóch krokach.

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

Część filtru usuwa wszystkie zbędne elementy, a mapa przekształca resztę w wybrany przez siebie sposób.

+0

to błąd "niepoprawnego tokena" –

+0

Czy używasz przestarzałego pliku node.js? Działa to dobrze nawet z plikiem node.js LTS v4.2.4 oraz w [jsbin] (http://jsbin.com/hudivipivu/edit?js,console). –

+0

nr /var/www/html/nodeproject/helloworld/index.js:270 .filter (kontakt => contact.iAccepted == 'prawdziwym' && contact.contactAccepted ^ SyntaxError: nieoczekiwany token> w module. _compile (module.js: 439: 25) w Object.Module._extensions..js (module.js: 474: 10) w Module.load (module.js: 356: 32) w Function.Module._load (module.js: 312: 12) na Function.Module.runMain (module.js: 497: 10) przy starcie (node.js: 119: 16) na node.js: 902: 3 –

0

Nie wiem, czy to jest to, czego szukasz:

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

Nie chcę aby zwrócić wartość, muszę pominąć tę wartość, która nie jest zgodna z warunkiem teraz true, a także wartość false wstawioną do elementu tablicy. –

0

można odfiltrować fałszywe wartości:

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

Lub, jeśli nie można korzystać z funkcji strzałka:

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

Moja wartość nie jest równa wartości true lub false jej wartości liczbowe Chcę ponownie sprawdzić identyfikator użytkownika, którego wartość contactaccepted lub iaccepted jest prawdziwa –

+0

W javascript, liczba różna od 0 lub niepusty łańcuch jest wartością "prawdę": http://james.padolsey.com/javascript/truthy-falsey/ – Shanoor

+0

shan proszę, spróbuj zrozumieć, że mam dane json, które mają tak dobre wartości, które są prawdziwe, Prawdziwie zaakceptowałem teraz rzeczy, które muszę filtrować te identyfikatory, które obie wartości są prawdziwe. użyłem funkcji mapy, aby to sprawdzić. Mój główny problem, jeśli wartość warunku jest prawdziwa, to id wraca do tablicy, ale jeśli wartość warunku jest fałszywa, nie chcę dodawać zwrotu, w takim przypadku undefined zostanie automatycznie dodany na liście, a następnie użyj return false teraz resukt jest jak [ 34,56, false, 74] ale nie chcę tego chcę [34,56,74] nothinh zwróci w else instrukcji –