JavaScript 映射为某些元素返回未定义

标签 javascript object array.prototype.map

<分区>

给定以下成员数据数组,我将为成员资格状态不是最新的成员返回一组 memberID

这是成员数据:

var members = [
  {
    firstName: 'Howard',
    lastName: 'Lee',
    membershipIsCurrent: true,
    MemberID: 235
  },
  {
    firstName: 'James',
    lastName: 'Icharis',
    membershipIsCurrent: false,
    MemberID: 236
  },
  {
    firstName: 'Thomas',
    lastName: 'Cronquist',
    membershipIsCurrent: true,
    MemberID: 237
  },
  {
    firstName: 'Philip',
    lastName: 'Grover',
    membershipIsCurrent: false,
    MemberID: 238
  },
  {
    firstName: 'Eric',
    lastName: 'Broadstone',
    membershipIsCurrent: true,
    MemberID: 239
  },
  {
    firstName: 'Hunter',
    lastName: 'Gonzales',
    membershipIsCurrent: true,
    MemberID: 240
  }];

这是我获取该数据的代码:

function lapsedIDs (array ) {
  return array.map( function ( member ) {
    if ( member.membershipIsCurrent === false ) {
      return member.MemberID;
    }
  });
}

lapsedIDs(members);

这是结果。我不明白为什么它会为每个成员资格尚未失效的成员返回 undefined。有什么指点吗??

[ undefined, 236, undefined, 238, undefined, undefined ]

最佳答案

map() 将为原始数组中的每个现有元素创建一个新元素。

如果您不为所有条件返回,函数会自动返回您所看到的 undefined

您可以先使用 filter() 删除不需要的项目,然后使用 map()

 return array.map( function ( member ) {
    return member.membershipIsCurrent
  }).map(function(member){
     return member.MemberID;
  });

关于JavaScript 映射为某些元素返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48027018/

相关文章:

javascript - 使用条件语句在 Javascript 中的不同 for 循环之间进行选择

java - 在java中创建接口(interface)对象

javascript - ReactJs + Redux ---> 尝试调用企业名称,其中 item.business_id === BusinessId

javascript - 获取数组对象中第一个对象的键

javascript - Rails 应用程序未加载所有 javascript 文件生成

javascript - 无法让 (Footable) 函数在 AJAX 调用中工作,但它可以在其他地方工作

ios - 始终保存最后一个对象

reactjs - 在 React Native 中渲染逗号分隔的值字符串

javascript - 为什么关闭窗口时componentWillUnmount不触发?

javascript - 将属性附加到函数对象是否安全/可接受?