首页 > 代码库 > js 算法一
js 算法一
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; }
注意: 这两种方法思路类似,都可以实现要求,需要注意的是必须保证所有的元素都要遍历到,这样才能做正确判断。
方法三:特殊技巧
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; }
js 算法一
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。