【问题标题】:Convert state array values into key-value pairs将状态数组值转换为键值对
【发布时间】:2019-05-17 05:09:03
【问题描述】:

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

所以,我的状态是这样的:

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

【问题讨论】:

  • 你从哪里得到a002b003
  • @brk from // 等等评论

标签: javascript json reactjs state


【解决方案1】:

您可以通过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)

【讨论】:

  • 您的答案似乎正确,但它给了我错误:“data.reduce 不是函数”。我在单击按钮时调用的函数中使用了您的代码;我保存了这样的数据: const data = JSON.stringify(this.state.company_data);
  • 但是JSON.stringify 会返回一个字符串,你需要一个数组来使用Array.reduce。它应该给你“data.reduce 不是一个函数”。
  • 哦,看到了!我现在尝试将组件的状态存储在数据中,但它返回一个未定义的数组
猜你喜欢
  • 2020-08-25
  • 2014-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-28
  • 2017-08-25
  • 1970-01-01
  • 2021-02-14
相关资源
最近更新 更多