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

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

 更新時(shí)間:2024年11月07日 11:06:57   作者:寰夢(mèng)  
這篇文章主要為大家詳細(xì)介紹了vue前端sku實(shí)現(xiàn)的相關(guān)方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考一下
this.value.skuStockList = [];
        let skuList = this.value.skuStockList;
        //只有一個(gè)屬性時(shí)
        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: ["紅色", "藍(lán)色"] },
  { name: "大小", values: ["S", "M"] },
  { name: "材質(zhì)", values: ["棉", "羊毛"] }
];

初始化部分

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

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

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

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

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

1. 只有一個(gè)屬性時(shí)

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

執(zhí)行過(guò)程:

  • 只有一個(gè)屬性 "顏色",其值為 ["紅色", "藍(lán)色"]。
  • 對(duì)這個(gè)屬性的每一個(gè)值,生成一個(gè) SKU 并推入 skuList。

結(jié)果:

[
  {"spData": "[{\"key\":\"顏色\",\"value\":\"紅色\"}]"},
  {"spData": "[{\"key\":\"顏色\",\"value\":\"藍(lán)色\"}]"}
]

2. 有兩個(gè)屬性時(shí)

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

執(zhí)行過(guò)程:

  • 有兩個(gè)屬性 "顏色" 和 "大小",其中 "顏色" 有 ["紅色", "藍(lán)色"],"大小" 有 ["S", "M"]。
  • 代碼會(huì)生成兩個(gè)屬性的所有組合。即,遍歷 "顏色" 的每一個(gè)值,并與 "大小" 的每個(gè)值進(jìn)行配對(duì)。

結(jié)果:

[
  {"spData": "[{\"key\":\"顏色\",\"value\":\"紅色\"},{\"key\":\"大小\",\"value\":\"S\"}]"},
  {"spData": "[{\"key\":\"顏色\",\"value\":\"紅色\"},{\"key\":\"大小\",\"value\":\"M\"}]"},
  {"spData": "[{\"key\":\"顏色\",\"value\":\"藍(lán)色\"},{\"key\":\"大小\",\"value\":\"S\"}]"},
  {"spData": "[{\"key\":\"顏色\",\"value\":\"藍(lán)色\"},{\"key\":\"大小\",\"value\":\"M\"}]"}
]

3. 有三個(gè)屬性時(shí)

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

執(zhí)行過(guò)程:

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

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

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

結(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\":\"藍(lán)色\"},{\"key\":\"大小\",\"value\":\"S\"},{\"key\":\"材質(zhì)\",\"value\":\"棉\"}]"},
  {"spData": "[{\"key\":\"顏色\",\"value\":\"藍(lán)色\"},{\"key\":\"大小\",\"value\":\"S\"},{\"key\":\"材質(zhì)\",\"value\":\"羊毛\"}]"},
  {"spData": "[{\"key\":\"顏色\",\"value\":\"藍(lán)色\"},{\"key\":\"大小\",\"value\":\"M\"},{\"key\":\"材質(zhì)\",\"value\":\"棉\"}]"},
  {"spData": "[{\"key\":\"顏色\",\"value\":\"藍(lán)色\"},{\"key\":\"大小\",\"value\":\"M\"},{\"key\":\"材質(zhì)\",\"value\":\"羊毛\"}]"}
]

總結(jié)

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

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

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

相關(guān)文章

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

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

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

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

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

    vue項(xiàng)目配置env的方法步驟

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

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

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

    Vue請(qǐng)求后端接口導(dǎo)出excel表格方式

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

    Vue實(shí)現(xiàn)星級(jí)評(píng)價(jià)效果實(shí)例詳解

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

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

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

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

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

    vue3之聲明式和編程式導(dǎo)航詳解

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

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

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

最新評(píng)論

台中县| 双鸭山市| 柘荣县| 南昌县| 沿河| 苏州市| 重庆市| 肥东县| 搜索| 永康市| 通辽市| 乌兰县| 申扎县| 正阳县| 昭平县| 福清市| 樟树市| 朔州市| 凤阳县| 墨玉县| 贞丰县| 榆树市| 赞皇县| 定安县| 剑川县| 裕民县| 瓦房店市| 隆昌县| 萝北县| 商河县| 五莲县| 平远县| 南和县| 堆龙德庆县| 固阳县| 浦北县| 志丹县| 鸡泽县| 上林县| 揭阳市| 额济纳旗|