【问题标题】:convert array of arrays to key value pairs using plain JavaScript or jQuery [duplicate]使用纯 JavaScript 或 jQuery 将数组数组转换为键值对 [重复]
【发布时间】:2020-06-04 14:09:23
【问题描述】:

我在 JavaScript 中有如下数组数组:

myarr = [Array(3), Array(3)]

它有值:

[
 ['ID', 'Name', 'BloodGroup'],
 [1, 'Jim', 'B+'],
 [2, 'Jane', 'A+']
]

我希望对象数组为:

[{'ID':1,'Name':'Jim', 'BloodGroup': 'B+'}, ....]

有没有什么方法可以在不使用 for 循环的情况下使用纯 js 或 jQuery 来实现,因为我得到的数据可能很大,服务器端不是一个选项。

【问题讨论】:

  • 你试过了吗?
  • 请访问help center,使用tour查看内容和How to Ask。做一些研究,搜索关于SO的相关主题;如果您遇到困难,请发布您的尝试minimal reproducible example,并使用[<>] sn-p 编辑器记录输入和预期输出。
  • 永远不需要jQuery来映射数组
  • @Sfili_81 我对 for 循环有粗略的逻辑,但在性能方面需要不同的解决方案,我在这里用 map reduce 搜索了各种类似的问题,但这些对我来说并没有太大帮助
  • 为什么不在创建阵列的服务器上执行此操作?它看起来像 CSV

标签: javascript jquery arrays


【解决方案1】:

破坏也许是一种方法?

const arr = [
  ['ID', 'Name', 'BloodGroup'],
  [1, 'Jim', 'B+'],
  [2, 'Jane', 'A+']
]
const titles = data[0]; // not used yet
const obj = arr.slice(1).map(([ID, Name, BloodGroup]) => ({ ID, Name, BloodGroup }))
console.log(obj)

我想我可能会错过使用titles 的抽象级别,但我仍在调查中

@NinaScholz 给了我一个更抽象的例子

const arr = [
  ['ID', 'Name', 'BloodGroup'],
  [1, 'Jim', 'B+'],
  [2, 'Jane', 'A+']
]
const titles = arr[0]; 

const obj = arr.slice(1).map(
  arr => Object.fromEntries(
    titles.map( 
      (t, i) => [t, arr[i]] 
    )
  )
);

console.log(obj)

【讨论】:

    猜你喜欢
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    • 2021-04-24
    • 1970-01-01
    • 2012-05-24
    相关资源
    最近更新 更多