最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue前端sku實現(xiàn)的方法小結(jié)

 更新時間:2024年11月07日 11:06:57   作者:寰夢  
這篇文章主要為大家詳細介紹了vue前端sku實現(xiàn)的相關(guān)方法,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以參考一下
this.value.skuStockList = [];
        let skuList = this.value.skuStockList;
        //只有一個屬性時
        if (this.selectProductAttr.length === 1) {
          let attr = this.selectProductAttr[0];
          for (let i = 0; i < attr.values.length; i++) {
            skuList.push({
              spData: JSON.stringify([{key:attr.name,value:attr.values[i]}])
            });
          }
        } else if (this.selectProductAttr.length === 2) {
          let attr0 = this.selectProductAttr[0];
          let attr1 = this.selectProductAttr[1];
          for (let i = 0; i < attr0.values.length; i++) {
            if (attr1.values.length === 0) {
              skuList.push({
                spData: JSON.stringify([{key:attr0.name,value:attr0.values[i]}])
              });
              continue;
            }
            for (let j = 0; j < attr1.values.length; j++) {
              let spData = [];
              spData.push({key:attr0.name,value:attr0.values[i]});
              spData.push({key:attr1.name,value:attr1.values[j]});
              skuList.push({
                spData: JSON.stringify(spData)
              });
            }
          }
        } else {
          let attr0 = this.selectProductAttr[0];
          let attr1 = this.selectProductAttr[1];
          let attr2 = this.selectProductAttr[2];
          for (let i = 0; i < attr0.values.length; i++) {
            if (attr1.values.length === 0) {
              skuList.push({
                spData: JSON.stringify([{key:attr0.name,value:attr0.values[i]}])
              });
              continue;
            }
            for (let j = 0; j < attr1.values.length; j++) {
              if (attr2.values.length === 0) {
                let spData = [];
                spData.push({key:attr0.name,value:attr0.values[i]});
                spData.push({key:attr1.name,value:attr1.values[j]});
                skuList.push({
                  spData: JSON.stringify(spData)
                });
                continue;
              }
              for (let k = 0; k < attr2.values.length; k++) {
                let spData = [];
                spData.push({key:attr0.name,value:attr0.values[i]});
                spData.push({key:attr1.name,value:attr1.values[j]});
                spData.push({key:attr2.name,value:attr2.values[k]});
                skuList.push({
                  spData: JSON.stringify(spData)
                });
              }
            }
          }
        }

假設(shè)的選擇屬性數(shù)據(jù)

假設(shè)選擇的商品屬性如下(可以根據(jù)需要調(diào)整):

this.selectProductAttr = [
  { name: "顏色", values: ["紅色", "藍色"] },
  { name: "大小", values: ["S", "M"] },
  { name: "材質(zhì)", values: ["棉", "羊毛"] }
];

初始化部分

首先,代碼初始化了一個空數(shù)組 skuStockList,并通過 skuList 引用指向該數(shù)組。

this.value.skuStockList = [];
let skuList = this.value.skuStockList;

這段代碼的目的是為后續(xù)生成的 SKU 列表提供一個存儲地方。

處理不同數(shù)量的屬性

接下來,代碼根據(jù) this.selectProductAttr.length 的值判斷當前有多少個屬性被選擇。根據(jù)屬性的數(shù)量,代碼將生成不同數(shù)量的組合 SKU。

1. 只有一個屬性時

if (this.selectProductAttr.length === 1) {
  let attr = this.selectProductAttr[0]; // 獲取第一個屬性
  for (let i = 0; i < attr.values.length; i++) { // 遍歷該屬性的所有值
    skuList.push({
      spData: JSON.stringify([{ key: attr.name, value: attr.values[i] }])
    });
  }
}

執(zhí)行過程:

  • 只有一個屬性 "顏色",其值為 ["紅色", "藍色"]。
  • 對這個屬性的每一個值,生成一個 SKU 并推入 skuList。

結(jié)果:

[
  {"spData": "[{\"key\":\"顏色\",\"value\":\"紅色\"}]"},
  {"spData": "[{\"key\":\"顏色\",\"value\":\"藍色\"}]"}
]

2. 有兩個屬性時

else if (this.selectProductAttr.length === 2) {
  let attr0 = this.selectProductAttr[0]; // 獲取第一個屬性
  let attr1 = this.selectProductAttr[1]; // 獲取第二個屬性
  for (let i = 0; i < attr0.values.length; i++) { // 遍歷第一個屬性的所有值
    if (attr1.values.length === 0) { // 如果第二個屬性沒有值
      skuList.push({
        spData: JSON.stringify([{ key: attr0.name, value: attr0.values[i] }])
      });
      continue; // 跳過當前循環(huán),繼續(xù)處理下一個第一個屬性的值
    }
    for (let j = 0; j < attr1.values.length; j++) { // 遍歷第二個屬性的所有值
      let spData = [];
      spData.push({ key: attr0.name, value: attr0.values[i] }); // 添加第一個屬性的值
      spData.push({ key: attr1.name, value: attr1.values[j] }); // 添加第二個屬性的值
      skuList.push({
        spData: JSON.stringify(spData)
      });
    }
  }
}

執(zhí)行過程:

  • 有兩個屬性 "顏色" 和 "大小",其中 "顏色" 有 ["紅色", "藍色"],"大小" 有 ["S", "M"]。
  • 代碼會生成兩個屬性的所有組合。即,遍歷 "顏色" 的每一個值,并與 "大小" 的每個值進行配對。

結(jié)果:

[
  {"spData": "[{\"key\":\"顏色\",\"value\":\"紅色\"},{\"key\":\"大小\",\"value\":\"S\"}]"},
  {"spData": "[{\"key\":\"顏色\",\"value\":\"紅色\"},{\"key\":\"大小\",\"value\":\"M\"}]"},
  {"spData": "[{\"key\":\"顏色\",\"value\":\"藍色\"},{\"key\":\"大小\",\"value\":\"S\"}]"},
  {"spData": "[{\"key\":\"顏色\",\"value\":\"藍色\"},{\"key\":\"大小\",\"value\":\"M\"}]"}
]

3. 有三個屬性時

else {
  let attr0 = this.selectProductAttr[0]; // 獲取第一個屬性
  let attr1 = this.selectProductAttr[1]; // 獲取第二個屬性
  let attr2 = this.selectProductAttr[2]; // 獲取第三個屬性
  for (let i = 0; i < attr0.values.length; i++) { // 遍歷第一個屬性的所有值
    if (attr1.values.length === 0) { // 如果第二個屬性沒有值
      skuList.push({
        spData: JSON.stringify([{ key: attr0.name, value: attr0.values[i] }])
      });
      continue; // 跳過當前循環(huán),繼續(xù)處理下一個第一個屬性的值
    }
    for (let j = 0; j < attr1.values.length; j++) { // 遍歷第二個屬性的所有值
      if (attr2.values.length === 0) { // 如果第三個屬性沒有值
        let spData = [];
        spData.push({ key: attr0.name, value: attr0.values[i] }); // 添加第一個屬性的值
        spData.push({ key: attr1.name, value: attr1.values[j] }); // 添加第二個屬性的值
        skuList.push({
          spData: JSON.stringify(spData)
        });
        continue; // 跳過當前循環(huán),繼續(xù)處理下一個第二個屬性的值
      }
      for (let k = 0; k < attr2.values.length; k++) { // 遍歷第三個屬性的所有值
        let spData = [];
        spData.push({ key: attr0.name, value: attr0.values[i] }); // 添加第一個屬性的值
        spData.push({ key: attr1.name, value: attr1.values[j] }); // 添加第二個屬性的值
        spData.push({ key: attr2.name, value: attr2.values[k] }); // 添加第三個屬性的值
        skuList.push({
          spData: JSON.stringify(spData)
        });
      }
    }
  }
}

執(zhí)行過程:

有三個屬性 "顏色"、"大小" 和 "材質(zhì)",其值分別為:

  • "顏色":["紅色", "藍色"]
  • "大小":["S", "M"]
  • "材質(zhì)":["棉", "羊毛"]

代碼會生成三個屬性的所有組合。即,遍歷 "顏色" 的每一個值,和 "大小"、"材質(zhì)" 的每個值進行配對。

結(jié)果:

[
  {"spData": "[{\"key\":\"顏色\",\"value\":\"紅色\"},{\"key\":\"大小\",\"value\":\"S\"},{\"key\":\"材質(zhì)\",\"value\":\"棉\"}]"},
  {"spData": "[{\"key\":\"顏色\",\"value\":\"紅色\"},{\"key\":\"大小\",\"value\":\"S\"},{\"key\":\"材質(zhì)\",\"value\":\"羊毛\"}]"},
  {"spData": "[{\"key\":\"顏色\",\"value\":\"紅色\"},{\"key\":\"大小\",\"value\":\"M\"},{\"key\":\"材質(zhì)\",\"value\":\"棉\"}]"},
  {"spData": "[{\"key\":\"顏色\",\"value\":\"紅色\"},{\"key\":\"大小\",\"value\":\"M\"},{\"key\":\"材質(zhì)\",\"value\":\"羊毛\"}]"},
  {"spData": "[{\"key\":\"顏色\",\"value\":\"藍色\"},{\"key\":\"大小\",\"value\":\"S\"},{\"key\":\"材質(zhì)\",\"value\":\"棉\"}]"},
  {"spData": "[{\"key\":\"顏色\",\"value\":\"藍色\"},{\"key\":\"大小\",\"value\":\"S\"},{\"key\":\"材質(zhì)\",\"value\":\"羊毛\"}]"},
  {"spData": "[{\"key\":\"顏色\",\"value\":\"藍色\"},{\"key\":\"大小\",\"value\":\"M\"},{\"key\":\"材質(zhì)\",\"value\":\"棉\"}]"},
  {"spData": "[{\"key\":\"顏色\",\"value\":\"藍色\"},{\"key\":\"大小\",\"value\":\"M\"},{\"key\":\"材質(zhì)\",\"value\":\"羊毛\"}]"}
]

總結(jié)

  • 代碼根據(jù)選擇的商品屬性數(shù)量動態(tài)生成不同數(shù)量的 SKU 組合。
  • 當屬性數(shù)量為 1 時,生成一個包含該屬性所有值的 SKU 列表。
  • 當屬性數(shù)量為 2 時,生成包含這兩個屬性所有值的組合 SKU 列表。
  • 當屬性數(shù)量為 3 時,生成包含三個屬性的所有組合 SKU 列表。
  • 每一個 SKU 都是一個包含屬性名和值的 JSON 字符串,保存在 skuStockList 中。

通過這些步驟,代碼可以靈活地處理多屬性商品的不同組合,最終生成不同的 SKU 列表。

到此這篇關(guān)于vue前端sku實現(xiàn)的方法小結(jié)的文章就介紹到這了,更多相關(guān)vue sku內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue 實現(xiàn)輪播圖功能的示例代碼

    Vue 實現(xiàn)輪播圖功能的示例代碼

    Vue是一款流行的前端框架,它提供了一系列的工具和組件,使得開發(fā)者可以更加便捷地創(chuàng)建交互式的Web應(yīng)用程序,輪播圖是Web應(yīng)用程序中常見的一種交互式組件,本文將介紹如何使用Vue和第三方組件庫 Element UI實現(xiàn)輪播圖功能,需要的朋友可以參考下
    2023-05-05
  • 談?wù)刅ue.js——vue-resource全攻略

    談?wù)刅ue.js——vue-resource全攻略

    本篇文章主要介紹了談?wù)刅ue.js——vue-resource全攻略,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • vue項目配置env的方法步驟

    vue項目配置env的方法步驟

    在vue項目中env是全局配置文件,可以存儲不同環(huán)境下的變量,下面這篇文章主要給大家介紹了關(guān)于vue項目配置env的方法步驟,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • vue3結(jié)合typescript中使用class封裝axios

    vue3結(jié)合typescript中使用class封裝axios

    這篇文章主要為大家介紹了vue3結(jié)合typescript中使用class封裝axios實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Vue請求后端接口導出excel表格方式

    Vue請求后端接口導出excel表格方式

    這篇文章主要介紹了Vue請求后端接口導出excel表格方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue實現(xiàn)星級評價效果實例詳解

    Vue實現(xiàn)星級評價效果實例詳解

    這篇文章主要介紹了Vue實現(xiàn)星級評價效果的實例代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • vue自定義組件search-box示例詳解

    vue自定義組件search-box示例詳解

    這篇文章主要介紹了vue自定義組件search-box,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • vue+Element-ui實現(xiàn)分頁效果實例代碼詳解

    vue+Element-ui實現(xiàn)分頁效果實例代碼詳解

    這篇文章主要介紹了vue+Element-ui實現(xiàn)分頁效果 ,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-12-12
  • vue3之聲明式和編程式導航詳解

    vue3之聲明式和編程式導航詳解

    這篇文章主要介紹了vue3之聲明式和編程式導航,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • vue中element-ui使用axios上傳文件

    vue中element-ui使用axios上傳文件

    這篇文章主要為大家詳細介紹了vue中element-ui使用axios上傳文件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08

最新評論

合江县| 开封市| 建瓯市| 依安县| 西峡县| 河间市| 蕉岭县| 永吉县| 内乡县| 黎平县| 兰溪市| 青州市| 木兰县| 宜阳县| 双峰县| 华蓥市| 刚察县| 灵武市| 任丘市| 桓仁| 都昌县| 壶关县| 肃宁县| 灌南县| 漯河市| 东海县| 闻喜县| 手机| 杭锦旗| 屯门区| 赤水市| 大安市| 江城| 河源市| 临猗县| 阳江市| 洮南市| 大埔县| 寻甸| 奉新县| 宁安市|