js数组转化问题

输入数组格式如下`{
    "data": {
        "char": [
            [
                [29,"新","心","char_1"],
                [29,"新","心","char_2"]
            ]
        ],
        "miss": [
            [
                [29,"新","心","miss_1"],
                [29,"新","心","miss_2"]
            ]       
        ],
        "order": [
            []
        ]
    }
}`
如何转换为下面这个形式`{
    "event_list": [
        {
            "big": {
                "type": "char"
            },
            "small": [
                {
                    "type": "char_1",
                    "correct": "心",
                    "text": "新",
                    "pos": 20
                },
                {
                    "type": "char_2",
                    "correct": "心",
                    "text": "新",
                    "pos": 10
                }
            ]
        },
        {
            "big": {
                "type": "miss"
            },
            "small": [
                {
                    "type": "miss_1",
                    "correct": "心",
                    "text": "新",
                    "pos": 20
                },
                {
                    "type": "miss_2",
                    "correct": "心",
                    "text": "新",
                    "pos": 10
                }
            ]
        }
    ]
}`

阅读 1.2k
1 个回答

讲道理这种代码不就是花点时间就好...

const x = {
    "data": {
        "char": [
            [
                [29,"新","心","char_1"],
                [29,"新","心","char_2"]
            ]
        ],
        "miss": [
            [
                [29,"新","心","miss_1"],
                [29,"新","心","miss_2"]
            ]       
        ],
        "order": [
            []
        ]
    }
}

const r = {}
r['event_list'] = Object.keys(x.data).map(key => {
    const source = x.data[key].shift()
    if (!source || !source.length) return null
    return {
        big: {type: key}, small: source.map(subElt => {
            const [pos, text, correct, type] = subElt
            return {type, correct, text, pos}
        })
    }
}).filter(item => item)

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