1. 程式人生 > 其它 >根據屬性值建立sku資料

根據屬性值建立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>