国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

JavaScript算法教程之sku(庫存量單位)詳解

2024-05-06 16:38:07
字體:
來源:轉載
供稿:網友

前言

這幾天公司出的題目,之前項目中寫過一個類似的,但是寫的很猥瑣(一些表現是通過頻繁操作DOM實現的),借著有獎勵的機會重寫了一下。

sku:

SKU=Stock Keeping Unit(庫存量單位)。即庫存進出計量的基本單元,可以是以件,盒,托盤等為單位。SKU這是對于大型連鎖超市DC(配送中心)物流管理的一個必要的方法。現在已經被引申為產品統一編號的簡稱,每種產品均對應有唯一的SKU號。單品:對一種商品而言,當其品牌、型號、配置、等級、花色、包裝容量、單位、生產日期、保質期、用途、價格、產地等屬性與其他商品存在不同時,可稱為一個單品。

以上摘自百度百科

思路:

通過字典鍵值對(在JavaScript中即是Object數據類型)的方式來查找對應可選屬性。

難點:

在于所確定屬性的同級可選屬性。

實現步驟:

  1. 將拿到的數據重新組織成需要展示的數據格式、計算使用的字典數據格式、以及計算過程中需要的一些輔助數據。
  2. 獲取頁面的所選的屬性。
  3. 根據所選屬性組成查找key來查找結果。
  4. 將結果緩存,方便下次加速查找。
  5. 表現到頁面。
  6. 確定商品。

核心代碼:

js;">/** * 得到結果 * @param {string} key 查找關鍵字以;分割 * @return {array} 所有可選屬性數組*/getResult(key, isRealFind = true) { // 如緩存中存在,則直接返回結果 if (this.cacheData[key] && isRealFind) { this.result = this.cacheData[key]; this.resultID = this.goodsDict[key] ? this.goodsDict[key] : ''; console.log(this.resultID); return this.result; } // 繼續查找 let result = ''; for (let _key in this.goodsDict) { let keyArr = key.split(';'); let _keyArr = _key.split(';'); let arr = keyArr.concat(_keyArr); arr = Array.from(new Set(arr)); if (arr.length === _keyArr.length) { result += _key; } } if (isRealFind) { // 所有可選屬性 this.result = result.split(';'); let _keyArr = key.split(';'); if (_keyArr[_keyArr.length - 1] === '') { _keyArr.pop(); } for (let i = 0; i < _keyArr.length; i++) { let _arr = key.split(';'); let str = _arr.splice(i, 1); let oldResult = this.getResult(_arr.join(';'), false); let index = ''; // 獲取該key所在索引 this.allKeys.forEach((item, i) => { if (item.indexOf(str.join('')) !== -1) {  index = i;  return; } }); this.allKeys[index].forEach(item => { if (oldResult.indexOf(item) !== -1) {  this.result.push(item); } }); } this.result = Array.from(new Set(this.result)); // 緩存數據 this.cacheData[key] = this.result; this.resultID = this.goodsDict[key] ? this.goodsDict[key] : ''; console.log(this.resultID); return this.result; } else { return result; }}

github地址 (應該拉下來就能跑,頁面展示用的jQuery,因為當前項目需要,換成mvvm框架頁面表現會更加簡單)

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。

 

注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 庆安县| 莱芜市| 达孜县| 营山县| 亳州市| 嘉祥县| 沂南县| 郸城县| 友谊县| 盘锦市| 华亭县| 舒城县| 青铜峡市| 麻城市| 崇州市| 新田县| 海盐县| 九龙坡区| 米脂县| 阿勒泰市| 乌什县| 汉源县| 潼关县| 富宁县| 泸定县| 达日县| 财经| 耒阳市| 山阴县| 南丹县| 本溪| 甘南县| 永泰县| 柞水县| 绥棱县| 滁州市| 乾安县| 杭锦后旗| 徐州市| 平凉市| 修文县|