博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS 算法一
阅读量:5009 次
发布时间:2019-06-12

本文共 1317 字,大约阅读时间需要 4 分钟。

1 写一个函数,去掉a数组中和b数组中相同的元素。

思路一:让a数组中的元素和b数组中的元素逐个比较,若相同,则删除。

方法一:

function array_diff(a, b){    for(var i = 0; i < a.length; i++){        for(var j = 0; j < b.length; j++){            if(a[i] == b[j]){                a.splice(a.indexOf(b[j]), 1); //删除                j = -1;  //必须保证a中的每一个元素都从b的第一个元素开始遍历            }        }    }    return a;}
var a = ["c", "a", "b", "a", "d"];var b = ["a", "b"];console.log(array_diff(a, b));

 

思路二: 让b数组中的元素和a数组中的元素逐个比较,若相同,则删除。

方法二: 

function array_diff(a, b) {    for(var i = 0; i < b.length; i++)    {        for(var j = 0; j < a.length; j++)        {            if(a[j] == b[i]) {                a.splice(j,1);                j = j - 1;  //保证a中从删除后的元素开始继续遍历            }        }    }    return a;}

 

注意: 这两种方法思路类似,都可以实现要求,需要注意的是必须保证所有的元素都要遍历到,这样才能做正确判断。

 

思路三:通过给数组b的元素加一个键(true)来判断。

方法三:

function array_diff(a, b) {    var temp1 = []; //临时数组1    var temp2 = []; //临时数组2        for (var i = 0; i < b.length; i++) {        temp1[b[i]] = true; //巧妙地方:把数组B的值当成临时数组1的键并赋值为真        //console.log(temp1);    };    for (var i = 0; i < a.length; i++) {        if (!temp1[a[i]]) {            temp2.push(a[i]);            // 巧妙地方:同时把数组A的值当成临时数组1的键并判断是否为真,            // 如果不为真说明没重复,就合并到一个新数组里,这样就可以得到一个全新并无重复的数组        } ;    };    return temp2;}

 

转载于:https://www.cnblogs.com/lijy/p/6888353.html

你可能感兴趣的文章
Qt 【无法打开 xxxx头文件】
查看>>
JAVA项目将 Oracle 转 MySQL 数据库转换(Hibernate 持久层)
查看>>
三层架构(我的理解及详细分析)
查看>>
Django模板语言相关内容
查看>>
前端开发工程师如何在2013年里提升自己【转】--2016已更新升级很多何去何从?...
查看>>
markdown语法测试集合
查看>>
running and coding
查看>>
实现QQ第三方登录、网站接入
查看>>
HTML CSS 层叠样式表 三
查看>>
Qt pro pri 文件学习1
查看>>
软件工程概论第六周学习进度条
查看>>
[思路]导入导出功能
查看>>
【iOS】UICollectionView自己定义Layout之蜂窝布局
查看>>
php将数组或字符串写入文件
查看>>
【AHOI2013】【BZOJ3238】差异
查看>>
【以太坊钱包开发 一】MyEtherWallet 钱包开发项目概述
查看>>
golang——(strings包)常用字符串操作函数
查看>>
发布aar到jcenter
查看>>
跨浏览器问题的五种解决方案
查看>>
selenium通过send_keys方法上传文件
查看>>