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

}); 

這會給結果是這樣的:如何跳過數組.map的元素?

[ '0', '35', '37', '30', '34', '36', '33 」, '32', 未定義, '332', '328', '337', '333', 未定義]

我想跳過陣列中的未定義的元素。

+0

不要返回假的? – Shanoor

+0

其返回false作爲一個元素,但我想跳過,我需要的結果爲['0','35','37','30','34','36','33','32', '','332','328','337','333']而不是['0','35','37','30','34','36','33','32' ,false,'332','328','337','333',false] –

+1

[.map()上的javascript跳過元素的可能重複(https://stackoverflow.com/questions/24806772/javascript- skip-element-on-map) –

回答

16

這是Array.prototype.filter()是。你需要分兩步做。

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

過濾器部分取出所有不需要的元素,然後將其餘部分轉換爲您想要的方式。

+0

它給我一個錯誤「不知道的令牌」 –

+0

您是否使用了不推薦使用的node.js?即使使用node.js LTS 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 ^ 語法錯誤:在模塊意外令牌> 。在Module.load(module.js:356:32)上的_compile(module.js:439:25) 位於Function.Module._load的Object.Module._extensions..js(module.js:474:10) (模塊.js:356:32) (module.js:312:12) at function.Module.runMain(module.js:497:10) at startup(node.js:119:16) at 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

我的值是不是真或假其數值我想要重新觸發那些其接觸或iaccepted值爲true的用戶ID –

+0

在javascript中,一個不同於0的數字或非空字符串是一個「truthy」值:http://james.padolsey.com/javascript/truthy-falsey/ – Shanoor

+0

shan請嘗試理解我有一個json數據,它具有如此amny值,這是真正的contactaccepted true和我現在接受了真正的事情,我必須過濾這兩個變量值是真的ID。我用地圖功能來檢查。我的主要問題,如果條件值是真的,然後id返回到數組,但如果條件值爲假我不想添加任何返回的情況下,undefined將在列表中自動添加,那麼yi使用return false現在resukt就像[ 34,56,假,74]但我不想要這個我想要[34,56,74] nothinh將返回其他語句 –