根据属性值创建sku数据

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      let data = [[1, 2], [5, 6, 8], [10]]

      // 根据属性值id创建sku
      function setSku(data) {
        const result = Array.prototype.reduce.call(
          data,
          function (a, b) {
            let sku = []
            a.forEach(function (valueA) {
              b.forEach(function (valueB) {
                sku.push(valueA.concat([valueB]))
              })
            })

            return sku
          },
          [[]]
        )
        return result
      }

      //  分开设置
      let result = setSku(data)

      const newData = [[1, 2], [5, 6, 8], [11]]

      const newRes = setSku(newData)

      subRes = result.concat(newRes)

      // 合并设置
      let totalData = [
        [1, 2],
        [5, 6, 8],
        [10, 11],
      ]

      const totalRes = setSku(totalData)

      // 复制防止改变原数组
      let cpSub = subRes.concat()
      let copyTotal = totalRes.concat()


      cpSub[0].forEach((item, index) => {
        cpSub.sort((a, b) => {
          return a[index] - b[index]
        })
      })
      copyTotal[0].forEach((item, index) => {
        copyTotal.sort((a, b) => {
          return a[index] - b[index]
        })
      })

      console.log(totalRes, copyTotal)
      // 判断结果,为相同
      let isSame = cpSub.toString() === copyTotal.toString()
      console.log(isSame)
    </script>
  </body>
</html>

posted @ 2022-06-01 16:02  智商感人  阅读(50)  评论(1)    收藏  举报