程序笔记   发布时间:2022-07-12  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了代码块 -- diff大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

问题 & 解答 非原创

Q: 写一个diff方法, 用于比较两个数组, 返回两数组中不同的部分; 要求考虑算法性能, 使用es6/es7语法, 不能使用第三方类库

console.log(diff([1, 2], [2, 1]));  // => []
console.log(diff([1, 2, 1], [2, 1, 1, 2]));  // => []
console.log(diff([1, 2, 3], [4, 3, 1]));   // => [2, 4]
console.log(diff([1, [2, 3], 4], [[1 ,2], [2, 3], 3, 4]));  // => [1, [1, 2], 3]
console.log(diff([[1, 2, 3], [3, 2, 1], 1, 2, 3], [2, 3, 1]));   // => [[1, 2, 3], [3, 2, 1]]
  • 代码

    function diff(a = [], b = []) {
        a = Array.from(new Set(a));
        b = Array.from(new Set(b));
        const arr = a.concat(b);
        const m = new Map();
        arr.map((item) => {
            const itemJson = JSON.stringify(item);
            if (!m.has(itemJson)) m.set(itemJson, item);
            else m.delete(itemJson);
        });
        return Array.from(m.values());
    }
    
    console.log(diff([1, 2], [2, 1]));  // => []
    console.log(diff([1, 2, 1], [2, 1, 1, 2]));  // => []
    console.log(diff([1, 2, 3], [4, 3, 1]));   // => [2, 4]
    console.log(diff([1, [2, 3], 4], [[1 ,2], [2, 3], 3, 4]));  // => [1, [1, 2], 3]
    console.log(diff([[1, 2, 3], [3, 2, 1], 1, 2, 3], [2, 3, 1]));   // => [[1, 2, 3], [3, 2, 1]]
    

大佬总结

以上是大佬教程为你收集整理的代码块 -- diff全部内容,希望文章能够帮你解决代码块 -- diff所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: