JS处理订单数据

在日常开发中,需要我们处理订单数据。
例如有如下数据:

const filterList = [
	{
		Code: "1",
        Id: "1",
        List: [
	        { Code: '00', Name: '通用' }, { Code: '21', Name: '15秋' }, { Code: '22', Name: '15冬' },
            { Code: '23', Name: '16春' }, { Code: '24', Name: '16夏' }, { Code: '25', Name: '16秋' },
            { Code: '26', Name: '16冬' }, { Code: '27', Name: '17春' }, { Code: '28', Name: '17夏' },
            { Code: '29', Name: '17秋' }, { Code: '30', Name: '17冬' }, { Code: '31', Name: '18春' },
            { Code: '32', Name: '18夏' }, { Code: '33', Name: '18秋' }, { Code: '34', Name: '18冬' },
            { Code: '35', Name: '19春' }, { Code: '36', Name: '19夏' }, { Code: '37', Name: '19秋' },
            { Code: '38', Name: '19冬' }, { Code: '40', Name: '20夏' }, { Code: '41', Name: '20秋' },
            { Code: '45', Name: '20冬' }, { Code: '46', Name: '21秋' }, { Code: '47', Name: '21冬' },
            { Code: '48', Name: '21春' }, { Code: '49', Name: '21夏' }, { Code: '50', Name: '22春' },
            { Code: '51', Name: '22夏' }, { Code: '52', Name: '22冬' }, { Code: '53', Name: '22秋' },
            { Code: '54', Name: '2022春' }, { Code: '55', Name: '22秋冬' }
		],
        ListType: "Base",
        Mode: "alone",
        Name: "销售季节",
        Type: "",
        inputType: "text",
    },
    {
        Code: "2",
        Id: "2",
        List: [
            { Code: 'DA', Name: '订货会订单' }, { Code: 'DH', Name: '期货订单' }, { Code: 'XS', Name: '档口订单' }
        ],
	    ListType: "Base",
	    Mode: "alone",
	    Name: "单据类型",
	    Type: "",
	    inputType: "text",
	},
    {
        Code: "3",
        Id: "3",
        List: [
            { Code: '0', Name: '未审核' }, { Code: '1', Name: '已审核' }, { Code: '2', Name: '部分发' },
            { Code: '3', Name: '已发完' }, { Code: '4', Name: '已完成' }, { Code: '5', Name: '已作废' }
        ],
        ListType: "Base",
        Mode: "alone",
        Name: "单据状态",
        Type: "",
        inputType: "text",
    },
    {
        Code: "4",
        Id: "4",
        List: [
            { Code: '0', Name: 'OEM' }, { Code: '1', Name: 'TOB' }, { Code: '2', Name: '档口' },
            { Code: '3', Name: '订货会' }
        ],
        ListType: "Base",
        Mode: "alone",
        Name: "单据来源",
        Type: "",
        inputType: "text",
    },
    {
        Code: "5",
        Id: "5",
        List: [
            { Code: '01', Name: '订货' }, { Code: '02', Name: '订货买断' }, { Code: '03', Name: '订货追单' }
        ],
        ListType: "Base",
        Mode: "alone",
        Name: "订货类型",
        Type: "",
        inputType: "text",
    },
];

要求为:

const selectedOptions = {
    "1_00": true,
    "1_49": false,
    "2_DH": true,
    "2_XS": true,
    "3_1": true,
    "4_1": true,
};

期望结果:

const expectedResult = [
    {
        Code: "1",
        ListType: "Base",
        Name: "销售季节",
        Type: "",
        Val: [
            { code: '00', val: '通用' }
        ],
        inputType: "text"
    },
    {
        Code: "2",
        ListType: "Base",
        Name: "单据类型",
        Type: "",
        Val: [
            { code: 'DH', val: '期货订单' },
            { code: 'XS', val: '档口订单' }
        ],
        inputType: "text"
    },
    {
        Code: "3",
        ListType: "Base",
        Name: "单据状态",
        Type: "",
        Val: [
            { code: '1', val: '已审核' }
        ],
        inputType: "text"
    },
    {
        Code: "4",
        ListType: "Base",
        Name: "单据来源",
        Type: "",
        Val: [
            { code: 'TOB', val: 'TOB' }
        ],
        inputType: "text"
    }
];

代码实现:

let arr = []
for (const key in selectedOptions) {
    if (selectedOptions[key]) {
        let Id = key.split('_')[0]
        if (!arr[Id]) {
            arr[Id] = {
                Id: Id,
                Code: []
            }
        }
        arr[Id].Code.push(key.split('_')[1])
    }
}
var expectedResult = []
arr.forEach(item => {
    let str = filterList.forEach(value => {
        if (item.Id.includes(value.Id)) {
            let selectedOption = value.List.filter(items => {
                return item.Code.includes(items.Code)
            })
            expectedResult.push({
                Code: value.Id,
                ListType: value.ListType,
                Name: value.Name,
                Type: value.Type,
                Val: selectedOption,
                inputType: value.inputType
            })
        }
    })
})

有其他简单的写法可在评论区留言共同进步!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星辰引路-Lefan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值