Javascript 如何跳过array.map的元素?

Javascript 如何跳过array.map的元素?,javascript,node.js,Javascript,Node.js,这将产生如下结果: [“0”, '35', '37', '30', '34', '36', '33', '32', 未定义, '332', '328', '337', '333', 未定义] 我想跳过数组中未定义的元素。不确定这是否是您要查找的元素: var userids = userbody.contacts.map(function(obj){ if((obj.iAccepted=='true')&&(obj.contactAccepted=='true')) {

这将产生如下结果:

[“0”, '35', '37', '30', '34', '36', '33', '32', 未定义, '332', '328', '337', '333', 未定义]


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

不确定这是否是您要查找的元素:

var userids = userbody.contacts.map(function(obj){

  if((obj.iAccepted=='true')&&(obj.contactAccepted=='true')) {
    console.log(true);
    return obj.userID //return obj.userID
  } 

});
这就是我们的目的。您需要分两步完成此操作

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

过滤部分去掉所有不必要的元素,然后映射将其余元素转换为所需的方式。

您可以过滤掉假值:

var userids = userbody.contacts
    .filter(contact => contact.iAccepted == 'true' && contact.contactAccepted == 'true')
    .map(contact => contact.userId);
或者,如果无法使用箭头功能:

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

您可以使用
Array.reduce
函数在一个函数中实现
Array.map
Array.filter
过程,如下所示

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

它作为一个元素返回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]这个问题有更完整、更有效的答案:我不想返回值,我需要跳过与当前条件不匹配的值true以及插入数组元素的false值。这不会跳过
false
值。。。在这种情况下,我喜欢
reduce
。我的值与true或false不同,它是一个数字值,我想返回那些其contactaccepted或iaccepted值为true的用户ID在javascript中,一个不同于0的数字或一个非空字符串是“truthy”值:shan请试着理解我有一个json数据,它有很多值,是realted ContactAccept true,我现在接受true,我必须过滤那些变量值都为true的ID。我用map函数检查了一下。我的主要问题是,如果条件值为true,则id返回到数组中,但如果条件值为false,我不想添加任何返回值。在这种情况下,未定义的将自动添加到列表中。我现在使用return false,resukt类似于[34,56,false,74],但我不想要这个,我想要[34,56,74]nothinh将在else语句中返回。您是否使用不推荐使用的node.js?即使使用node.js LTS v4.2.4,它对我来说也很好,在中也是如此/var/www/html/nodeproject/helloworld/index.js:270.filter(contact=>contact.iAccepted='true'&&contact.contactAccepted^SyntaxError:Unexpected token>at Module.\u编译(Module.js:439:25)at Object.Module.\u扩展..js(Module.js:474:10)at Module.load(Module.js:356:32)at Function.Module(module.js:312:12)在Function.module.runMain(module.js:497:10)启动时(node.js:119:16)在node.js:902:3没有什么?很明显,你正在使用一个过时的node.js,你可以使用
node--version
,我建议至少使用v4.x。如果不可能,你不能使用箭头函数,使用ES5语法,如果你遇到麻烦。旧的nodeyp的v0.10.25版本,请遵循我发布的babel链接如上所述,并使用右侧窗格上的ES5样式代码。
const userIds = userbody.contacts.filter((acc, cur) => {
  if((obj.iAccepted == 'true') && (obj.contactAccepted == 'true')) {
    acc.push(obj.userID);
  }
  return acc;
}, []);
console.log(userIds);