2016-02-12 90 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将返回其他语句 –