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

首頁(yè) > 編程 > JavaScript > 正文

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

2019-11-19 16:13:17
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

前言

這幾天公司出的題目,之前項(xiàng)目中寫(xiě)過(guò)一個(gè)類似的,但是寫(xiě)的很猥瑣(一些表現(xiàn)是通過(guò)頻繁操作DOM實(shí)現(xiàn)的),借著有獎(jiǎng)勵(lì)的機(jī)會(huì)重寫(xiě)了一下。

sku:

SKU=Stock Keeping Unit(庫(kù)存量單位)。即庫(kù)存進(jìn)出計(jì)量的基本單元,可以是以件,盒,托盤(pán)等為單位。SKU這是對(duì)于大型連鎖超市DC(配送中心)物流管理的一個(gè)必要的方法。現(xiàn)在已經(jīng)被引申為產(chǎn)品統(tǒng)一編號(hào)的簡(jiǎn)稱,每種產(chǎn)品均對(duì)應(yīng)有唯一的SKU號(hào)。單品:對(duì)一種商品而言,當(dāng)其品牌、型號(hào)、配置、等級(jí)、花色、包裝容量、單位、生產(chǎn)日期、保質(zhì)期、用途、價(jià)格、產(chǎn)地等屬性與其他商品存在不同時(shí),可稱為一個(gè)單品。

以上摘自百度百科

思路:

通過(guò)字典鍵值對(duì)(在JavaScript中即是Object數(shù)據(jù)類型)的方式來(lái)查找對(duì)應(yīng)可選屬性。

難點(diǎn):

在于所確定屬性的同級(jí)可選屬性。

實(shí)現(xiàn)步驟:

  1. 將拿到的數(shù)據(jù)重新組織成需要展示的數(shù)據(jù)格式、計(jì)算使用的字典數(shù)據(jù)格式、以及計(jì)算過(guò)程中需要的一些輔助數(shù)據(jù)。
  2. 獲取頁(yè)面的所選的屬性。
  3. 根據(jù)所選屬性組成查找key來(lái)查找結(jié)果。
  4. 將結(jié)果緩存,方便下次加速查找。
  5. 表現(xiàn)到頁(yè)面。
  6. 確定商品。

核心代碼:

/** * 得到結(jié)果 * @param {string} key 查找關(guān)鍵字以;分割 * @return {array} 所有可選屬性數(shù)組*/getResult(key, isRealFind = true) { // 如緩存中存在,則直接返回結(jié)果 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; } // 繼續(xù)查找 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)); // 緩存數(shù)據(jù) this.cacheData[key] = this.result; this.resultID = this.goodsDict[key] ? this.goodsDict[key] : ''; console.log(this.resultID); return this.result; } else { return result; }}

github地址 (應(yīng)該拉下來(lái)就能跑,頁(yè)面展示用的jQuery,因?yàn)楫?dāng)前項(xiàng)目需要,換成mvvm框架頁(yè)面表現(xiàn)會(huì)更加簡(jiǎn)單)

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)武林網(wǎng)的支持。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 海口市| 渭南市| 罗城| 冀州市| 平邑县| 安泽县| 加查县| 阳原县| 阜宁县| 清流县| 秦安县| 贞丰县| 泸水县| 永顺县| 莎车县| 永城市| 凤城市| 萨迦县| 甘谷县| 五常市| 陇南市| 临漳县| 政和县| 辽宁省| 收藏| 岳西县| 利辛县| 枣阳市| 昌都县| 栾川县| 通许县| 时尚| 泰宁县| 深圳市| 陵川县| 新乡县| 奉贤区| 广宁县| 绍兴市| 蒲江县| 许昌县|