欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2017年06月29日 11:54:21   作者:study  
這篇文章主要給大家介紹了JavaScript算法教程之sku(庫(kù)存量單位)的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。

前言

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

sku:

SKU=Stock Keeping Unit(庫(kù)存量單位)。即庫(kù)存進(jìn)出計(jì)量的基本單元,可以是以件,盒,托盤等為單位。SKU這是對(duì)于大型連鎖超市DC(配送中心)物流管理的一個(gè)必要的方法?,F(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è)單品。

以上摘自百度百科

思路:

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

難點(diǎn):

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

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

  1. 將拿到的數(shù)據(jù)重新組織成需要展示的數(shù)據(jù)格式、計(jì)算使用的字典數(shù)據(jù)格式、以及計(jì)算過程中需要的一些輔助數(shù)據(jù)。
  2. 獲取頁(yè)面的所選的屬性。
  3. 根據(jù)所選屬性組成查找key來查找結(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)該拉下來就能跑,頁(yè)面展示用的jQuery,因?yàn)楫?dāng)前項(xiàng)目需要,換成mvvm框架頁(yè)面表現(xiàn)會(huì)更加簡(jiǎn)單)

總結(jié)

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

相關(guān)文章

  • 基于jquery實(shí)現(xiàn)的省市區(qū)級(jí)聯(lián)無ajax

    基于jquery實(shí)現(xiàn)的省市區(qū)級(jí)聯(lián)無ajax

    省市區(qū)級(jí)聯(lián)的實(shí)現(xiàn)方法有很多,在本文為大家介紹下如何使用jquery無ajax來實(shí)現(xiàn),感興趣的朋友可以參考下,希望對(duì)大家有所幫助
    2013-09-09
  • JS+CSS繪制棋盤格的示例代碼

    JS+CSS繪制棋盤格的示例代碼

    在這篇文章中,將為大家展示如何使用css Flex-box和一些JavaScript來設(shè)計(jì)棋盤。文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-05-05
  • js獲取表格的行數(shù)和列數(shù)的方法

    js獲取表格的行數(shù)和列數(shù)的方法

    這篇文章主要介紹了js獲取表格的行數(shù)和列數(shù)的方法,需要的朋友可以參考下
    2015-10-10
  • 原生JS實(shí)現(xiàn)分享側(cè)邊欄

    原生JS實(shí)現(xiàn)分享側(cè)邊欄

    這篇文章主要為大家詳細(xì)介紹了原生JS實(shí)現(xiàn)分享側(cè)邊欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • JavaScript常用腳本匯總(三)

    JavaScript常用腳本匯總(三)

    本文給大家分享的常用腳本有通過數(shù)組,拓展字符串拼接容易導(dǎo)致性能的問題、頁(yè)面 視口 滾動(dòng)條的位置的輔助函數(shù)、調(diào)節(jié)元素透明度的函數(shù)、獲取鼠標(biāo)位置的幾個(gè)通用的函數(shù)、使用cssdisplay屬性來切換元素可見性的一組函數(shù)、樣式相關(guān)的通用函數(shù)、獲取元素當(dāng)前的高度和寬度。
    2015-03-03
  • js實(shí)現(xiàn)按鈕進(jìn)行某行上移下移

    js實(shí)現(xiàn)按鈕進(jìn)行某行上移下移

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)按鈕進(jìn)行某行上移下移,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • JavaScript事件委托用法分析

    JavaScript事件委托用法分析

    這篇文章主要介紹了JavaScript事件委托用法,實(shí)例分析了使用事件委托觸發(fā)事件的具體使用技巧,需要的朋友可以參考下
    2015-01-01
  • js 關(guān)鍵詞高亮(根據(jù)ID/tag高亮關(guān)鍵字)案例介紹

    js 關(guān)鍵詞高亮(根據(jù)ID/tag高亮關(guān)鍵字)案例介紹

    關(guān)鍵詞高亮在開發(fā)中會(huì)帶來很多的方便,關(guān)鍵詞高亮包括:根據(jù)ID高亮關(guān)鍵字/根據(jù)Tag名高亮關(guān)鍵字等等,感興趣的朋友可以了解下,希望本文對(duì)你有所幫助
    2013-01-01
  • 淺談頁(yè)面裝載js及性能分析方法

    淺談頁(yè)面裝載js及性能分析方法

    這篇文章主要簡(jiǎn)單介紹了頁(yè)面裝載js及性能分析方法的相關(guān)資料,需要的朋友可以參考下
    2014-12-12
  • 基于js實(shí)現(xiàn)抽紅包并分配代碼實(shí)例

    基于js實(shí)現(xiàn)抽紅包并分配代碼實(shí)例

    這篇文章主要介紹了基于js實(shí)現(xiàn)抽紅包并分配代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09

最新評(píng)論