【问题标题】:Transforme JSON into string array correlated将 JSON 转换为相关的字符串数组
【发布时间】:2022-01-27 04:00:35
【问题描述】:

我在将 json 转换为字符串数组时遇到问题

我需要将一个 json 转换为一个字符串数组,因为我将动态插入到我们的数据库中,因为这需要适用于任何 json,我不知道我将如何接收 JSON。

这是我的回应


    [
        {
            consumer: 'consumer a',
            orders: [{
                orderNumber: 1,
                details: {
                    dates: { deadline: '2022-02-17' },
                    status: [{ id: 1, status: 'Pending', date: '2022-01-01' },
                    { id: 2, status: 'Awaiting Payment', date: '2022-01-02' },
                    { id: 3, status: 'Awaiting Fulfillment', date: '2022-01-02' }]
                }
    
            },
            {
                orderNumber: 2,
                details: {
                    dates: { deadline: '2022-03-17' },
                    status: [{ id: 1, status: 'Pending', date: '2022-01-01' }]
                }
    
            }]
        },
        {
            consumer: 'consumer b',
            orders: [{
                orderNumber: 6,
                details: {
                    dates: { deadline: '2022-02-17' },
                    status: [{ id: 1, status: 'Pending', date: '2022-01-01' }]
                }
    
            },
            {
                orderNumber: 7,
                details: {
                    dates: { deadline: '2022-03-17' },
                    status: [{ id: 1, status: 'Pending', date: '2022-03-01' },
                    { id: 2, status: 'Awaiting Payment', date: '2022-04-02' },
                    { id: 3, status: 'Awaiting Fulfillment', date: '2022-05-02' }]
                }
    
            }]
        }
    ]

我需要这个结果


    ['consumer a', '1', '1'],
        ['consumer a', '1', '2'],
        ['consumer a', '1', '3'],
        ['consumer a', '2', '1'],
        ['consumer b', '6', '1'],
        ['consumer b', '7', '1'],
        ['consumer b', '7', '2'],
        ['consumer b', '7', '3']

我为实现这个目标创建了一张地图

喜欢这个

['consumer', 'consumer.orders.orderNumber', 'consumer.orders.detaisl.status.id']

但不能这样做,有人知道吗?

【问题讨论】:

  • 为什么要在变量周围加上引号?这似乎是你的主要问题。

标签: node.js json typescript


【解决方案1】:

您可以使用reduce函数,然后遍历每个订单,并为每个状态再次遍历,然后返回累加器

 const arr = [
        {
            consumer: 'consumer a',
            orders: [{
                orderNumber: 1,
                details: {
                    dates: { deadline: '2022-02-17' },
                    status: [{ id: 1, status: 'Pending', date: '2022-01-01' },
                    { id: 2, status: 'Awaiting Payment', date: '2022-01-02' },
                    { id: 3, status: 'Awaiting Fulfillment', date: '2022-01-02' }]
                }
    
            },
            {
                orderNumber: 2,
                details: {
                    dates: { deadline: '2022-03-17' },
                    status: [{ id: 1, status: 'Pending', date: '2022-01-01' }]
                }
    
            }]
        },
        {
            consumer: 'consumer b',
            orders: [{
                orderNumber: 6,
                details: {
                    dates: { deadline: '2022-02-17' },
                    status: [{ id: 1, status: 'Pending', date: '2022-01-01' }]
                }
    
            },
            {
                orderNumber: 7,
                details: {
                    dates: { deadline: '2022-03-17' },
                    status: [{ id: 1, status: 'Pending', date: '2022-03-01' },
                    { id: 2, status: 'Awaiting Payment', date: '2022-04-02' },
                    { id: 3, status: 'Awaiting Fulfillment', date: '2022-05-02' }]
                }
    
            }]
        }
    ]


const result = arr.reduce((acc,val)=>{
 val.orders.forEach(o=>o.details.status.forEach(s=>acc.push([val.consumer, o.orderNumber.toString(), s.id.toString()])))
 return acc
},[])

console.log(result)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-27
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多