问答

js 对奇怪的数组格式用冒号为切割进行改造为新对象

作者:admin 2021-04-17 我要评论

原格式↓ const data = [['香蕉:123', '黄瓜:123'], ['梨子:321']] 理想格式↓ const data1 = [{ name: '香蕉', id: '123' }, { name: '黄瓜', id: '123' }, { n...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

原格式↓

const data = [['香蕉:123', '黄瓜:123'], ['梨子:321']]

理想格式↓

const data1 = [{ name: '香蕉', id: '123' },
               { name: '黄瓜', id: '123' },
               { name: '梨子', id: '321' }]

如上所示,用冒号为分割符号,左边为name,右边为id

请教各位大神该如何操作,小弟在这里先谢谢各位大神的解答了,感激不尽!

###
let result = data.reduce((result, items) => {
    return result.concat(items.map(item => {
        let tmp = item.split(":");
        return {name: tmp[0], id: tmp[1]}
    }))
}, []);



let result = data.map(items => {
    return items.map(item => {
        let [name,id] = item.split(":");
        return {name, id};
    })
}).flat();
###
expanedArr (arr) {
      // 将二维数组展开成一维数据
      const flat = arr.reduce((prev, next) => {
        return prev.concat(next)// 循环将数组进行拼接
      })
      // console.log(flat)
      return flat
    },
const data = [['香蕉:123', '黄瓜:123'], ['梨子:321']]

// 先将二维数组展开成一维数据
const arr = this.expanedArr(data)
// 得到['香蕉:123', '黄瓜:123','梨子:321']

// 然后再把arr的每个值用冒号分割就行了
const res = arr.map(item => {
        const its = item.split(':')
        return {
          name: its[0],
          id: its[1]
        }
      })
      console.log(res)
###
[['香蕉:123', '黄瓜:123'], ['梨子:321']].flat(Infinity).map(v => {
    const tmp = v.split(":")
    return {
       name: tmp.shift(),
       id: tmp.shift(),
    }
})
###
// => [{"name":"香蕉","id":"123"},{"name":"黄瓜","id":"123"},{"name":"梨子","id":"321"}]
const data1 = demo([['香蕉:123', '黄瓜:123'], ['梨子:321']])

function demo (list) {
  let res = []; list.forEach(item => item.forEach(names => {
    const [name, id] = names.split(':')
    res.push({ name, id })
  }))
  return res;
}
###

看到楼上大佬成群,只好杀一对大括号了。

[ ['香蕉:123', '黄瓜:123'], ['梨子:321'] ].flat(Infinity).map(s => Object.fromEntries(s.split(':').map((v, k) => [ [ "name", "id" ][k], v ])))

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • nginx响应速度很慢

    nginx响应速度很慢

  • 点击选中的多选框,会在已选那一栏显示

    点击选中的多选框,会在已选那一栏显示

  • PHP 多态的理解

    PHP 多态的理解

  • 关于C语言中static的问题

    关于C语言中static的问题

腾讯云代理商
海外云服务器