JavaScript (jquery) 数组去重的算法探讨

方法很巧妙 但是要事先知道对应的name或其他属性名称 主键值只适用于已知数据对象进行调用;

var arr1 = [{ name: ‘C30‘ }, { name: ‘C35‘ }, { name: ‘C40‘ }, { name: ‘C45‘ }, { name: ‘C50‘ }, { name: ‘C60‘ }, { name: ‘C55‘}];

//取到strength设定中的列表

var arr2 = [{ name: ‘C30‘ }, { name: ‘C35‘}];

//取到当前合同明细的列表

var temp = []; //临时数组1

var temparray = []; //临时数组2

for (var i = 0; i < arr2.length; i++) {

temp[arr2[i].name] = true; //巧妙地方:把数组B的对象对应的属性值当成临时数组1的键并赋值为真

};

for (var i = 0; i < arr1.length; i++) {

if (!temp[arr1[i].name]) {

temparray.push(arr1[i]); //巧妙地方:同时把数组A对象对应的属性值当成临时数组1的键并判断是否为真,如果不为真说明没重复,就合并到一个新数组里,这样就可以得到一个全新并无重复的数组

};

};

// document.write(temparray.join(",") + "");

console.log(temparray);

// var datalist=[{name:‘C30‘},{name:‘C35‘},{name:‘C40‘},{name:‘C45‘},{name:‘C50‘},{name:‘C60‘},{name:‘C55‘}];

//取到strength设定中的列表

var rowlist=[{name:‘C30‘},{name:‘C35‘}];

//取到当前合同明细的列表

function remove(arrPerson,objPropery,objValue){

return $.grep(arrPerson, function(cur,i){

return cur[objPropery]!=objValue;

});

}

for(var i = 0; i < datalist.length; i++){

//全部的资料中去除已经存在的资料

//可以考虑更换更高效的算法进行去除

for(var j =0;j < rowlist.length; j++) {

if (datalist[i].name==rowlist[j].name){

//去除对应的数组中的资料

//dataList.pop(dataList[i].name);

datalist = remove(datalist,"name",rowlist[j].name);

}

}

}

// a+b  去重   js如何合并两个数组并删除重复的项

var a = [1,2,3,4,5];

var b = [1,2,4,5];

alert(tab(a,b)); // 显示对应的去重后的数组

function tab(arr1,arr2){

var arr = arr1.concat(arr2);

var lastArr = [];

for(var i = 0;i<arr.length;i++)

{

if(! unique(arr[i],lastArr))

{

lastArr.push(arr[i]);

}

}

return lastArr;

}

function unique(n,arr)

{

for(var i=0;i<arr.length;i++)

{

if(n==arr[i]){

return true;

}

}

return false;

}

时间: 2024-10-13 14:32:47

JavaScript (jquery) 数组去重的算法探讨的相关文章

使用JavaScript进行数组去重——一种高效的算法

最近比较忙,没时间更新博客,等忙完这阵子会整理一篇使用AngularJS构建一个中型的单页面应用(SPA)的文章,尽情期待!先占个坑. 数组去重的算法有很多种,以下是一种. 思路如下: 定义一个空的对象obj: 循环数组arr,判断obj[arr[i]]是否为false,如果是则将该数组元素放到result中,并且将obj[arr[i]]置为true: obj[arr[0]]肯定为false,因为obj为空,arr[0]将被放到result中,并且obj[arr[0]]被置为true: 循环的过

javascript jquery数组操作小结

----------------------------------------------------------定义数组---------------------------------------------------------- $(function(){ var aArray = {};//定义一个数组 aArray['name'] = "张三"; aArray['sex'] = "男"; aArray['mail'] = "[email p

JavaScript之数组去重

前言:昨天看到了别人发的帖子,谈到了面试题中经常出现的数组去重的问题.作为一个热爱学习.喜欢听老师话的好孩纸,耳边忽然想起来高中老师的谆谆教导:不要拿到题就先看答案,要先自己思考解答,然后再对照答案检验.于是我便开始了独立思考的过程: 首先,我想到的是另建一个结果数组,用来存储原始数组中不重复的数据.遍历原始数组依次跟结果数组中的元素进行比较,检测是否重复.于是乎,我写出了如下代码A: 1 Array.prototype.clearRepetitionA = function(){ 2 var

JavaScript实现数组去重方法

一.利用ES6 Set去重(ES6中最常用) function unique (arr) { return Array.from(new Set(arr)) } var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}]; console.log(unique(arr)) //[1, "true&quo

javascript实现数组去重

数组去重即去掉数组中重复的元素,是web前端工作者在面试过程中和工作中经常会遇到的一个问题,相信一般的方法大家都会,只不过会存在效率差异问题,下面我就来说说我们常用的几种数组去重的方法! 方法1,思路:通过双重循环,每次检测新数组里面是否有该元素,没有就加进去,改方法思路简单,但当数组长度较长时,会非常影响性能!(不推荐使用) function deleteRepeat1(arr) { var newArr = []; for (var i = 0; i < arr.length; i++) {

javascript中数组去重的4种方法

面试前端必须准备的一道问题:怎样去掉Javascript的Array的重复项.在最近面试中,百度.腾讯.盛大等都在面试里出过这个题目.这个问题看起来简单,但其实暗藏杀机. 考的不仅仅是实现这个功能,更能看出你对计算机程序执行的深入理解. 我总共想出了三种算法来实现这个目的: 方法一: Array.prototype.unique1 = function() {     var n = []; //一个新的临时数组     for(var i = 0; i < this.length; i++)

JavaScript&amp;jQuery.数组

数组 数组是一种特殊类型的变量,可以存储一个值,也可以存储多个值. 创建数组 创建数组时,先声明数组变量,使用关键字var;数组的值由一对中括号([])括起来,数组中的值由逗号(,)分开;数组中的值可以是数字.字符串.布尔值. 访问和更改数组中的值 数组使用索引来确定值,访问数组中的值时也是使用索引来获取数组中的值. <!DOCTYPE html><html lang="en"><meta charset="UTF-8"><

原生JavaScript对象数组去重,重构为对象{pro1:[hash], pro02: [hash]}

function unique(objArr) { var result = {}; var proObj = objArr[0]; for(var pro in proObj){ var hash = []; for(var i = 0; i < objArr.length; i++){ var obj = objArr[i]; for(var pros in obj){ if(pros === pro){ var val = obj[pros]; if(!hash[val]){ var va

javaScript数组去重方法

在JAvascript平时项目开发中经常会用到数组去重的操作.这时候就要用到JS数组去重的方法了. demo1: 第一种:JS数组去重操作方法是利用遍历原数组,利用数组的indexOf()方法来来判断新数组b中是否有原数组a中的元素,如果没有的话则在b数组的后面追加上a[i],如果有的话就不执行任何操作,最后可以达到数组去重的操作. 这种方法应该是平时开发中最常用的JS数组去重的方法了,简单又实用. demo2: 第二种去重的方法比较巧妙,是定义一个空对象和一个空数组,在遍历原数组的时候来用原数