数据之间值转换的问题

var optionList = [
      {
        id:"e8ba0f2c806b4d23b5ec6dd6d7c7dfa4",
        name:"size",
        position: 1,
        value: "small"
      },
      {
        id:"c27d36b6699f47a6b94f4e854a3a8d96",
        name:"color",
        position:2,
        value:"pink"
      },
      {
        id:"a2f73846dec54e9b8386c1ca9e3f5c01",
        name:"other",
        position:3,
        value: "type-A"
      },
     {
       id:"a2f73846dec54e9b56hjky78769989022",
       name:"materials",
       position:4,
       value: "nylon"
     }
    ];
    var varList =[
      {
        option1:"small",
        option2:"pink",
        option3:"type-A",
        option4:"nylon",
        price:82,
        productId:"31533bf663c842bcb9f54d88f88ff043",
        requiresShipping:0,
        shopId:"a9566d29322841f19e3f52c910391d52"
      },
      {
        option1:"large",
        option2:"red",
        option3:"type-B",
        price:93,
        productId:"30tiorkggkokgrkowse234",
        requiresShipping:0,
        shopId:"a94546jkgflwefmbjggngn00005869"
      }
    ] ;

有两个数组optionList 和 varList :
在varList数组的子对象中, option1:"small", 表明 他的size 是small(size: "small"”"), 因为在optionList 中有一个对象中 poisition : 1,而他的name属性值为“size”, 相同道理: varList数组的子对象中的 option2:"pink",则表明他的color 是 pink ,因为在optionList 中有一个对象 poisition : 2,他的name属性值为“color”, 以此类推option3:"type-A",option4:"nylon", 则是表明 (other: "type-A"和 materials: "nylon" ).....
根据这个情况, 怎么样去转换数据 , 让varList数组中的子对象增加dyItem属性, 就转换成下面的varData 这个数据形式一样??
有些混乱, 求大伙们指点...非常感谢

    var varData =[
      {
        option1:"small",
        option2:"pink",
        option3:"type-A",
        option4:"nylon",
        price:82,
        productId:"31533bf663c842bcb9f54d88f88ff043",
        requiresShipping:0,
        shopId:"a9566d29322841f19e3f52c910391d52",
        dyItem:[{ name: "size", value: "small" }, {name: "color",  value: "pink"}, {name: "other", value: "type-A"}, {name: "materials", value: "nylon"}]
      },
      {
        option1:"large",
        option2:"red",
        option3:"type-B",
        price:93,
        productId:"30tiorkggkokgrkowse234",
        requiresShipping:0,
        shopId:"a94546jkgflwefmbjggngn00005869",
        dyItem:[{ name: "size", value: "large" }, {name: "color",  value: "red"}, {name: "other", value: "type-B"}]
      }
    ]
阅读 1.4k
1 个回答
varList.map(item => {
    const dyItem = []
    for (let key in item) {
        if (/^option\d+$/.test(key)) {
            dyItem.push({
                name: optionList.find(e => e.position == key.match(/\d+/)[0]).name,
                value: item[key]
            })
        }
    }
    return {...item, dyItem}    
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题