javascript - 迭代对象列表但插入计算值

标签 javascript reactjs ecmascript-6 redux

提前感谢您的帮助!顺便说一句,我总是投票

所以我有这个成员列表

export const currentMembers= {
  'A1': {
    'memberStartDate': 0,
    'currentContractEndDate': 0,
    'flagged': false,
    'notes': 'Some Notes about member',
    'memberId': 'A1',
  },
  'A2': {
    'memberStartDate': 1454306400000,
    'currentContractEndDate': 1501747600000,
    'notes': 'Some Notes about member',
    'flagged': false,
    'memberId': 'A2',
  },
  'A3': {
    'memberStartDate': 1454306400000,
    'currentContractEndDate': 1502747600000,    
    'notes': 'Some Notes about member',
    'flagged': false,
    'memberId': 'A3',
  },
}

我正在尝试编写一个函数,它将返回相同的列表,但带有插入的计算值,如下所示:

export const currentMembersModified = {
  'A1': {
    'memberStartDate': 0,
    'currentContractEndDate': 0,
    'daysRemainingInContract': 0,  // calculated from currentMembers object above
    'flagged': false,
    'notes': 'Some Notes about member',
    'memberId': 'A1',
  },
  'A2': {
    'memberStartDate': 1454306400000,
    'currentContractEndDate': 1501747600000,
    'daysRemainingInContract': 123,  // calculated from currentMembers object above
    'notes': 'Some Notes about member',
    'flagged': false,
    'memberId': 'A2',
  },
  'A3': {
    'memberStartDate': 1454306400000,
    'currentContractEndDate': 1502747600000,
    'daysRemainingInContract': 234, // calculated from currentMembers object above
    'notes': 'Some Notes about member',
    'flagged': false,
    'memberId': 'A3',
  },
}

我一直在努力:

const modifiedMembers = Object.keys(currentMembers).forEach(key => {
  const currentMemberObject = currentMembers[key]

  const currentDate = new Date()
  const currentEndDate = currentMembers[key].currentContractEndDate
  const calculatedDateStuff = currentEndDate - currentDate

  return {stuff I don't know how to do}
})

谢谢!

最佳答案

如果您在 React 项目中使用 babel,那么根据您所包含的阶段,您可以尝试如下操作:

var newMembers; // new object/state
Object.keys(currentMembers).forEach((key) => {
  var calculatedDays = currentMembers[key].currentContractEndDate - 21343214213; // or whatever logic you need here
  var member = {};
  member[key] = {
        ...currentMembers[key],
      calculatedDays
    }
  newMembers = {
    ...newMembers,
    ...member
  }
});

这使用扩展运算符组合对象。 ES6 目前只允许使用展开运算符来组合迭代,但由于 babel,将它们与对象一起使用是一种常见的 React 模式,因为这意味着您可以避免更改原始对象。

关于javascript - 迭代对象列表但插入计算值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43578406/

相关文章:

javascript - Angularjs - 在路由更改时刷新 Controller 范围

javascript - jQuery - 这个语法是什么意思?

javascript - React single source of Truth with html5 视频

javascript - 如何将对象转换为对象数组?

javascript - 创建一个像气泡一样增长的div

javascript - jQuery 中的绑定(bind)事件是非常昂贵还是非常便宜?

reactjs - React-Admin AutocompleteInput 中是否有类似 Material-UI Autocomplete freeSolo 的东西

javascript - redux-saga 第一次不工作

javascript - "const something = () => ({..."箭头函数模式

javascript - React State Hook如何从ES6 Destructuring Assignment中获取状态变量名