字符串进行数组解析

文章讲述了如何从给定的JSON数据中,通过字符串操作和对象映射技术,提取并重组数据,以获取颜色和材质等字段的信息。
摘要由CSDN通过智能技术生成

昨天自己刚拼的字符串今天自己来解笑死,字符串形成

 let  data1 = 'title:颜色,subTitle:白色-黑色,titleKey:two|title:材质,subTitle:材质1-材质2,titleKey:one'
        let data2 = [
          {
            create_time: "2019-08-29 15:45:36",
            good_id: 31,
            id: 20,
            inventory: '1',
            one: '材质1',
            price: '1.00',
            three: '',
            two: '白色',
          }, {
            create_time: "2019-08-29 15:45:36",
            good_id: 31,
            id: 21,
            inventory: '2',
            one: '材质2',
            price: '2.00',
            three: '',
            two: '黑色',
          }
        ]

        data1 = data1.split('|').map(item => {
          let newItem = item.split(',') //  ['title:颜色', 'subTitle:白色-黑色', 'titleKey:two']
         // 找到包含的字段抛出
          // 将找的字段进行截选抛出
          // 找出符合条件的字段进行字符串截取,获取值
          let title = newItem.find(item1 => item1.includes('title')).slice(newItem.find(item1 => item1.includes('title')).indexOf(':') + 1)
          let titleKey = newItem.find(item1 => item1.includes('titleKey')).slice(newItem.find(item1 => item1.includes('titleKey')).indexOf(':') + 1)
          let subTitle = newItem.find(item1 => item1.includes('subTitle')).slice(newItem.find(item1 => item1.includes('subTitle')).indexOf(':') + 1).split('-')
          return {
            subTitle,
            [titleKey]: title,
            value: title,
            key: titleKey
          }
        })
        console.log(data1, '实体1');
        /**
         * 打印结果
         *  [{颜色: 'two', subTitle: ['白色', '黑色'], value: '颜色', key: 'two'}, {材质: 'one', subTitle: ['材质1', '材质2'], value: '材质', key: 'one'}]
         */
        data2 = data2.map(item => {
          const newItem = {}
           // 这段我自己都不知道 在写什么,只知道data1里面抛出的数据可以作为依据进行重组
          Object.keys(item).forEach(key => { // key ['one',two,three]
           data1.forEach(item1 => {
            if (item1.key === key) newItem[item1[item1.key]] = item[key]
           })
          })
          
          return {
            ...newItem,
            '价格': item.price,
            '库存': item.inventory,
          }
        })
        console.log(data2, '实体2');

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值