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 
    } 

}); 

यह इस तरह परिणाम दे देंगे:मैं सरणी के तत्व को कैसे छोड़ सकता हूं। मैप?

[ '0', '35', '37', '30', '34', '36', '33 ', ' 32 ', अपरिभाषित, ' 332 ', ' 328 ', ' 337 ', ' 333 ', अपरिभाषित]

मैं सरणी में अपरिभाषित तत्वों को छोड़ना चाहते।

+0

झूठी वापस नहीं करते हैं? – Shanoor

+0

अपनी वापसी एक तत्व के रूप में झूठी लेकिन मैं छोड़ मैं के रूप में [ '0', '35', '37', '30', '34', '36', '33', '32' परिणाम की जरूरत है कि चाहते हैं, '332', '328', '337', '333' [ '0', '35', '37', '30', '34', '36', '33', '32' के बजाय] झूठे, '332', '328', '337', '333', झूठी] –

+1

की [जावास्क्रिप्ट को छोड़ .map पर तत्व संभावित डुप्लिकेट()] (https://stackoverflow.com/questions/24806772/javascript- छोड़-तत्व-ऑन-नक्शा) –

उत्तर

16

यह वही है Array.prototype.filter() के लिए है। आपको इसे दो चरणों में करने की ज़रूरत है।

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

फ़िल्टर भाग सभी अनावश्यक तत्वों को बाहर ले जाता है, फिर नक्शा बाकी को जिस तरह से आप चाहते हैं उसे बदल देता है।

+0

इसकी मुझे एक त्रुटि "unexcepted टोकन" देने –

+0

आप एक पदावनत Node.js का उपयोग कर रहे हैं? यह मेरे लिए node.js एलटीएस v4.2.4, और [jsbin] (http://jsbin.com/hudivipivu/edit?js,console) के साथ भी ठीक काम करता है। –

+0

सं /var/www/html/nodeproject/helloworld/index.js:270 .filter (संपर्क => contact.iAccepted == 'सही' && contact.contactAccepted ^ सिंटैक्स त्रुटि: अनपेक्षित टोकन> मॉड्यूल पर। _compile (module.js: 439: 25) ऑब्जेक्ट. मॉड्यूल._extensions..js (module.js: 474: 10) पर मॉड्यूल.लोड (मॉड्यूल.जेएस: 356: 32) पर Function.Module._load पर (module.js: 312: 12) फ़ंक्शन पर। module.runMain (module.js: 497: 10) स्टार्टअप पर (node.js: 119: 16) node.js पर: 902: 3 –

0

सुनिश्चित नहीं हैं कि अगर यह आप के लिए क्या देख रहे हैं:

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

मैं नहीं चाहिए मूल्य वापस करने के लिए, मुझे उस मान को छोड़ना होगा जो अभी स्थिति के साथ-साथ सरणी तत्व में डाले गए गलत मूल्य से मेल नहीं खाता है। –

0

आप गलत मूल्यों को फ़िल्टर कर सकते हैं:

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

या, यदि आप तीर कार्यों का उपयोग नहीं कर सकते हैं:

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

मेरा मान सत्य या गलत नहीं है, यह एक संख्यात्मक मान है जो मैं उन उपयोगकर्ता आईडी को पुनः प्राप्त करना चाहता हूं जिनके संपर्क अस्वीकृत या अस्वीकृत मान सत्य हैं –

+0

जावास्क्रिप्ट में, 0 से अलग संख्या या एक गैर-खाली स्ट्रिंग एक "सच्चाई" मान है: http://james.padolsey.com/javascript/truthy-falsey/ – Shanoor

+0

shan कृपया समझने की कोशिश करें कि मेरे पास एक जेसन डेटा है जिसमें इतने अमीर मूल्य हैं जो वास्तविक संपर्क किए गए वास्तविक हैं और मैंने अब उन चीजों को फ़िल्टर करना है जिन्हें मैं उन आईडी को फ़िल्टर करना चाहता हूं, जो परिवर्तनीय मान दोनों सत्य हैं। मैंने इसे देखने के लिए मानचित्र फ़ंक्शन का उपयोग किया। मेरी मुख्य समस्या अगर स्थिति मान सत्य है तो आईडी सरणी में वापस आती है, लेकिन यदि स्थिति मान गलत है, तो मैं उस मामले में कुछ भी वापस नहीं जोड़ना चाहता हूं, जो अनिर्धारित रूप से सूची में जोड़ा गया है, जो कि वाई झूठी वापसी का उपयोग करता है, अब पुन: 34,56, झूठी, 74] लेकिन मैं नहीं चाहता कि मैं चाहता हूं कि [34,56,74] नहिन्ह अन्य विवरण में वापस आ जाएंगे –

संबंधित मुद्दे