freecodecamp//算法——2更新库存


一、项目的具体要求见:

https://learn.freecodecamp.one/coding-interview-prep/algorithms/inventory-update/
在这里插入图片描述

二、代码详情

JS

function updateInventory(arr1, arr2) {
    arr2.forEach((newItem,newIndex) => {
        arr1.forEach((curItem,curIndex) => {
            if (newItem[1] === curItem[1]) {
                curItem[0] += newItem[0]
                arr2.splice(newIndex, 1)
            }
        })
    })

    return arr1.concat(arr2).sort(function(a,b) {
        if (a[1] > b[1]) {
            return 1;
        } else if (a[1] < b[1]) {
            return -1;
        } else {
            return 0
        }
    })
}

// 两个货物列表示例
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);
//[21, "Bowling Ball"], [2, "Dirty Sock"], [1, "Hair Pin"], [5, "Microphone"]], [[2, "Hair Pin"], [3, "Half-Eaten Apple"], [67, "Bowling Ball"], [7, "Toothpaste"]

三、收获

  1. array.forEach() 函数的使用,可以简洁大量代码。与 array.map() 函数的区别是,map函数不会改变原数组,而forEach函数会替代原数组;https://www.w3school.com.cn/jsref/jsref_sort.asp
  2. array.prototype.sort() 函数,字符串按首字母排序复杂点,数字则可以简洁点;其中sort函数若是return a - b,指从小到大排序,即a - b 返回 -1,是默认的排序方式;反之则从大到小排序。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

四、感想

做这一题真的做了很久,有时候容易钻牛角尖,结果一直做不出来,也找不出来问题,这样很容易半天就浪费了。以后做题要给自己一个时间限制,当自己真做不出来的时候,就带着疑问去看人家是怎么解决的,多参考多学习别人的思路,不断改进。


*代码尚存在很多不足,望提出不同的意见,互相交流。*
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值