本文主要是介绍【freecodecamp】更新仓库 Inventory Update,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目要求
freecodecamp 上面的一个练习题
题目要求是:
依照一个存着新进货物的二维数组,更新存着现有库存(在 arr1 中)的二维数组. 如果货物已存在则更新数量 . 如果没有对应货物则把其加入到数组中,更新最新的数量. 返回当前的库存数组,且按货物名称的字母顺序排列.
当你遇到困难的时候,记得查看错误提示、阅读文档、搜索、提问。
问题分析
1.更新的顺序要按照后面的数组来(for 循环)
2.在进行的过程中仓库也是会改变的
3.同样类型的话增加数量 否则在仓库中添加一个新的数组
4,添加完毕之后的数组要根据名字来进行排序
代码解决方案
1.一个添加新物品的函数,根据是否已经存在将单个数组元素添加进数组中
function updateSingle(singleArr){//输入为单个数组 arr1为全局变量中的仓库for(var j = 0 ; j < arr1.length;j++){if(singleArr.indexOf(arr1[j][1])>-1){//如果存在名字相同 只增加数量arr1[j][0] = arr1[j][0] + singleArr[0];return console.log('yes!');//直接返回 不运行下面的代码}}console.log('no');//原有仓库中没有 将数组作为元素添加进仓库(arr1)arr1.push(singleArr);
}
2.添加更新并且仓库
for(var x = 0; x < arr2.length; x++){updateSingle(arr2[x]);
}//这个运行完之后arr1的仓库就是最新的了
3.根据名字来进行排序
arr1.sort(function(value1,value2){var a = value1[1];var b = value2[1];a = a.toLowerCase();b = b.toLowerCase();return a > b;
});
完整代码:
function updateInventory(arr1, arr2) {function updateSingle(singleArr){for(var j = 0 ; j < arr1.length;j++){if(singleArr.indexOf(arr1[j][1])>-1){arr1[j][0] = arr1[j][0] + singleArr[0];return false;}}arr1.push(singleArr);}for(var x = 0; x < arr2.length; x++){updateSingle(arr2[x]);}arr1.sort(function(value1,value2){var a = value1[1];var b = value2[1];a = a.toLowerCase();b = b.toLowerCase();return a >b;});console.log(arr1);return arr1;
}// 仓库库存示例
var curInv = [[21, "Bowling Ball"],[2, "Dirty Sock"],[1, "Hair Pin"],[5, "Microphone"]
];var newInv = [[2, "Hair Pin"],[3, "Half-Eaten Apple"],[67, "Bowling Ball"],[7, "Toothpaste"]
];updateInventory(curInv, newInv);
欢迎评论点赞哦 ,评论还能给自己加分呢
这篇关于【freecodecamp】更新仓库 Inventory Update的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!