神经大条

文章 评论 浏览 28

神经大条 2022-05-04 13:56:37
        var arr1 = [1,2,2,1]
        var arr2 = [2,2]
        var map = {}

        arr1.forEach(item => map[item] ? map[item]++ : map[item] = 1)
        var result = arr2.filter(item => {
            if(map[item]){//非undefined,非0
                map[item] --;
                return true
            }
        })

        console.log(result)// [2, 2]

第 59 题:给定两个数组,写一个方法来计算它们的交集

神经大条 2022-05-04 13:54:23

思路一: 利用正则比对当前字符串找出位置
function indexOf1(str,val){
const reg = new RegExp(${val},'gi');
const result = reg.exec(str);
return result?result.index:-1;
}
思路二: 利用字符串截取循环找到符合截取值的位置
function indexOf2(str,val){
const sl = str.length;
const vl = val.length;
for(var i=0;i<=sl-vl;i++){
if(str.slice(i,vl+i)===val){
return i;
}
}
return -1;
}

第 151 题:用最简洁代码实现 indexOf 方法?

神经大条 2022-05-04 13:50:19

@vanishcode 应该是担心 Array.prototype.join.call(arguments, ",") 会导致缓存的 key 值相同,比如在一些特殊情况下:

function add(a, b) {
    console.log(a + b);
}

var memoizedAdd = memoize(add);

memoizedAdd(1, 2); // 3
memoizedAdd('1,2') // 3

看这一段的时候没有想到~~哈哈哈哈哈,本以为去掉前面的length拼接问题也不大。。。。。学习到了

JavaScript 专题之函数记忆

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文