javascript - 在 ReactJS 中动态协调 2 个下拉菜单

标签 javascript reactjs ecmascript-6

第一次发帖,我会保持简短。 我有一个从 API 获取的数据,我想,当您选择 A 组时,第二个下拉列表将仅显示 A 组的所有成员。

这些是我有权访问的 API 的示例响应。 注意:一个群组中有很多成员。

列出组

[
  "Group A",
  "Group B",
  "Group C"
]

按组获取成员

[
 {
   "group": "Group A",
   "name": " Jimmy"
 }
]

获取所有成员

[
 {
   "group": "Group A",
   "name": " Jimmy"
 },

 {
   "group": "Group B",
   "name": " Johnny"
 },
 {
   "group": "Group C",
   "name": " James"
 }
]

那么我怎样才能将这些数据整理成类似这样的东西

groups: ["Group A", "Group B", "Group C"]
members: {
          Group A: ["Jimmy"],
          Group B: ["Johnny"],
          Group C: ["James"]
         }

最佳答案

您可以手动在您的群组中添加成员,如下所示

let data = [
 {
   "group": "Group A",
   "name": " Jimmy"
 },

 {
   "group": "Group B",
   "name": " Johnny"
 },
 {
   "group": "Group C",
   "name": " James"
 },
 {
   "group": "Group C",
   "name": " Simon"
 }
]

let groupData = {}
data.forEach(item => {
  if (groupData[item.group]) {
    if (groupData[item.group].indexOf(item.name) === -1) {
      groupData[item.group].push(item.name)
    }
  } else {
    groupData[item.group] = [item.name];
  }
});

console.log("members: ", groupData)
console.log("groups: ", Object.keys(groupData))

// Or you could do the same thing with reduce and es6 conventions
const reducedData = data
  .reduce((acc, item) =>
    (acc[item.group] && acc[item.group].indexOf(item.name) === -1)
  	      ? ({...acc, [item.group]: acc[item.group].concat(item.name)})
  	      : ({...acc, [item.group]: [item.name]}), 
  {});
console.log("members: ", reducedData)
console.log("groups: ", Object.keys(reducedData))

关于javascript - 在 ReactJS 中动态协调 2 个下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51814523/

相关文章:

javascript - 如何像 React 中的 {...props} 一样解构 Vue 中的 props?

JavaScript:顺序迭代 Promise 函数

javascript - 如何使用递归、rest/spread 运算符和解构将数组中的这些数字加倍?

javascript - Chrome JS 调试帮助...函数在哪里调用?

javascript - 调整 highchart 系列两侧的空间

javascript - 我应该如何开始学习 JavaScript、jQuery 等?我的编程知识为零

javascript - 从 State 数组获取特定值时未定义 - React Native

javascript - this.state.persons.map 不是一个函数

html - Material-UI 文档中的根元素是什么意思?

javascript - 如何在用 React 编写的应用程序中查找内存泄漏