javascript - 将状态数组值转换为键值对

标签 javascript json reactjs state

我有一个状态对象数组。我想将数组内的值转换为键值对

所以,我的状态如下所示:

0: {emp_code: "a001", company_code: "company_a", name: "abx", details: Array(3), details_dtypes: Array(3)}
1: {emp_code: "b002", company_code: "company_b", name: "xbz ", details: Array(2), details_dtypes: Array(2)}
//and so on adding other values to the array

我想将emp-code和company_code转换为键值对并像JSON对象一样显示; 所以 JSON 输出看起来像这样:

{
emp_and_company:
{
  "company_a" : ["a001","a002"],
  "company_b" : ["b002","b003"]
}
}

所以我只想将company_code作为键,将值作为emp_code

最佳答案

您可以通过 Array.reduce 以简洁的方式完成此操作:

const data = [{ emp_code: "a001", company_code: "company_a", name: "abx", details: [], details_dtypes: [] }, { emp_code: "b002", company_code: "company_b", name: "xbz ", details: [], details_dtypes: [] }, { emp_code: "a002", company_code: "company_a", name: "xbz ", details: [], details_dtypes: [] }, { emp_code: "b003", company_code: "company_b", name: "xbz ", details: [], details_dtypes: [] } ]

let result = data.reduce((r,c) => 
  (r[c.company_code] = [...(r[c.company_code] || []), c.emp_code]) && r, {})

console.log(result)

这是一个更易读的版本:

const data = [{ emp_code: "a001", company_code: "company_a", name: "abx", details: [], details_dtypes: [] }, { emp_code: "b002", company_code: "company_b", name: "xbz ", details: [], details_dtypes: [] }, { emp_code: "a002", company_code: "company_a", name: "xbz ", details: [], details_dtypes: [] }, { emp_code: "b003", company_code: "company_b", name: "xbz ", details: [], details_dtypes: [] }]

let result = data.reduce((acc, obj) => {
  acc[obj.company_code] = [...(acc[obj.company_code] || []), obj.emp_code]
  return acc
}, {})

console.log(result)

关于javascript - 将状态数组值转换为键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56179966/

相关文章:

javascript - js : hiding divs

reactjs - 在 redux 中处理按钮状态和 Action

javascript - 如何解决 Typescript 中关于 `withStateHandlers` 的错误

javascript - 如何使用 Ajax 将 WebSocket 数据从 View 发送到 Controller 以及将修改后的数据发送到 View

javascript - 我们需要更深入 - 在 Vanilla Javascript 中使用 foreach 循环深度访问 JSON 和数组

javascript - js解析json多个元素与单个元素

javascript - 如何在 React.js 中根据路由过滤数组?

javascript - react : TypeError: Cannot read property 'addEventListener' of null

javascript - 如何从不同位置自动下载多个 PDF 文件(AppleScript 或 JavaScript)

javascript - Margin-left 在 Firefox 中不能正常工作