我如何跳过数组.map的元素?

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' ,undefined]

我想跳过数组中的未定义元素。

这是Array.prototype.filter()的用途。 你需要分两步做。

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

filter部分取出所有不必要的元素,然后将其余部分转换为您想要的方式。

不知道这是你在找什么:

 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/

你可以过滤出错误的值:

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

或者,如果您不能使用箭头function:

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