JavaScript算法教程之sku(库存量单位)详解
前⾔
这⼏天公司出的题⽬,之前项⽬中写过⼀个类似的,但是写的很猥琐(⼀些表现是通过频繁操作DOM实现的),借着有奖励的机会重写了⼀下。
sku:
SKU=Stock Keeping Unit(库存量单位)。即库存进出计量的基本单元,可以是以件,盒,托盘等为单位。SKU这是对于⼤型连锁超市DC(配送中⼼)物流管理的⼀个必要的⽅法。现在已经被引申为产品统⼀编号的简称,每种产品均对应有唯⼀的SKU号。单品:对⼀种商品⽽⾔,当其品牌、型号、配置、等级、花⾊、包装容量、单位、⽣产⽇期、保质期、⽤途、价格、产地等属性与其他商品存在不同时,可称为⼀个单品。
以上摘⾃百度百科
思路:
通过字典键值对(在JavaScript中即是Object数据类型)的⽅式来查对应可选属性。
难点:
在于所确定属性的同级可选属性。
实现步骤:
1. 将拿到的数据重新组织成需要展⽰的数据格式、计算使⽤的字典数据格式、以及计算过程中需要的⼀些辅助数据。
2. 获取页⾯的所选的属性。
3. 根据所选属性组成查key来查结果。
4. 将结果缓存,⽅便下次加速查。
5. 表现到页⾯。
6. 确定商品。
核⼼代码:
/**
* 得到结果
* @param {string} key 查关键字以;分割
* @return {array} 所有可选属性数组
*/
getResult(key, isRealFind = true) {
// 如缓存中存在,则直接返回结果
if (this.cacheData[key] && isRealFind) {
console.sultID);
sult;
}
// 继续查
let result = '';
for (let _key dsDict) {
let keyArr = key.split(';');
let _keyArr = _key.split(';');
let arr = at(_keyArr);
arr = Array.from(new Set(arr));
if (arr.length === _keyArr.length) {
result += _key;
}
}
if (isRealFind) {
// 所有可选属性
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 = Result(_arr.join(';'), false);
let index = '';
// 获取该key所在索引
this.allKeys.forEach((item, i) => {
if (item.indexOf(str.join('')) !== -1) {array工艺详解
index = i;
return;
}
});
this.allKeys[index].forEach(item => {
if (oldResult.indexOf(item) !== -1) {
}
});
}
// 缓存数据
this.cacheData[key] = sult;
console.sultID);
sult;
} else {
return result;
}
}
(应该拉下来就能跑,页⾯展⽰⽤的jQuery,因为当前项⽬需要,换成mvvm框架页⾯表现会更加简单)
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助,如果有疑问⼤家可以留⾔交流,谢谢⼤家对的⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论