重庆幸运农场中奖金额|重庆幸运农场官网
MyException - 我的異常網
當前位置:我的異常網» JavaScript » [js] sku結合查找庫存數量

[js] sku結合查找庫存數量

www.h0f1.com  網友分享于:2018-06-08  瀏覽:0次
[js] sku組合查找庫存數量
/* 后端數據 */
var data = {
    "10;20;30": {
        price: 5,
        count: 1
    },
    "10;20;31": {
        price: 10,
        count: 2
    },
    "11;20;30": {
        price: 5,
        count: 1
    },
    "10;21;31": {
        price: 10,
        count: 2
    },
    "10;21;32": {
        price: 10,
        count: 9
    }
}
 
var myData = {},
 
    //可選項key值
    keys = [
        [10, 11, 12],
        [20, 21],
        [30, 31, 32]
        ];
 
//獲取 key的庫存量
 
function getNum(key) {
    var result = 0,
 
        i, j, m,
 
        items, n = [];
 
    //檢查是否已計算過
    if (typeof myData[key] != 'undefined') {
        return myData[key];
    }
 
    items = key.split(";");
 
    //已選擇數據是最小路徑,直接從已端數據獲取
    if (items.length === keys.length) {
        return data[key] ? data[key].count : 0;
    }
 
    //拼接子串
    for (i = 0; i < keys.length; i++) {
        for (j = 0; j < keys[i].length && items.length > 0; j++) {
            if (keys[i][j] == items[0]) {
                break;
            }
        }
 
        if (j < keys[i].length && items.length > 0) {
            //找到該項,跳過
            n.push(items.shift());
        } else {
            //分解求值
            for (m = 0; m < keys[i].length; m++) {
                result += getNum(n.concat(keys[i][m], items).join(";"));
            }
            break;
        }
    }
 
    //緩存
    myData[key] = result;
    return result;
}
 
document.write(getNum("10") + ";"); //輸出14
document.write(getNum("11") + ";"); //輸出1
document.write(getNum("10;21") + ";"); //輸出11
document.write(getNum("21;31") + ";"); //輸出2?

?

文章評論

軟件開發程序錯誤異常ExceptionCopyright © 2009-2015 MyException 版權所有
重庆幸运农场中奖金额