数组处理问题?

image.png

请问黄框的怎么快速处理成一维数组 [{ key1: '1月', key2: 19. key3: 19 .... }, { key1: '2月', key2: 5. key3: 4 .... },...]

阅读 1.4k
5 个回答
data.slice(3, 15).map(item => item.reduce((o, v, i) => {
    o['key' + (i + 1)] = v
    return o
}, {}))

新答案:

结果

[
  {key1: '1月', key2: 1, key3: 2, key4: 3, key5: 4, key6: 5},
  {key1: '2月', key2: 6, key3: 7, key4: 8, key5: 9, key6: 0},
]

js 代码

const data = [
    ['1月', 1, 2, 3, 4, 5],
    ['2月', 6, 7, 8, 9, 0],
];

data.map(item => Object.fromEntries(item.map((v, idx) => ['key' + (idx + 1), v])));

旧答案:

结果

{key1: '1月', key2: 1, key3: 2, key4: 3, key5: 4, key6: 5}

js 代码

Object.fromEntries(['1月', 1, 2, 3, 4, 5].map((v, i) => ['key' + (i + 1), v]))

就这样?只写了data单个数据的处理

list.map((v, index) => {
  return {
    [`key${index + 1}`]: v
  }
})

先截取数组1到12月份,再利用reduce进行处理

let arr = data.splice(3,15).map(item=>{
    item.reduce((pre,i,index)=>{
        pre['key' + (index + 1)] = i;
        if(index == arr.length - 1){
            pre = [pre]
        }
        return pre;
    },{})
})

这是我的思路(直接放出我的代码把)

et arrJan = [{ key1: '1月', key2: 19, key3: 19 }, { key1: '2月', key2: 5, key3: 4 }, ...]
let arrFeb = [{ key1: '2月', key2: 6, key3: 2 }, { key1: '3月', key2: 8, key3: 12 }, ...]
let arrMar = [{ key1: '3月', key2: 9, key3: 21 }, { key1: '4月', key2: 15, key3: 8 }, ...]
let arrApr = [...]
let arrMay = [...]
let arrJun = [...]

let multiArr = [arrJan, arrFeb, arrMar, arrApr, arrMay, arrJun]
let mergedArr = multiArr.flat()

let result = mergedArr.map(item => [item.key1, item.key2, item.key3]).flat()

佩服楼上第一位朋友的代码,一定是算法高手,仅用四五行就解决了,看来要多多学习!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题