方法很巧妙 但是要事先知道对应的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;
}
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

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

    最近比较忙,没时间更新博客,等忙完这阵子会整理一篇使用AngularJS构建一个中型的单页面应用(SPA)的文章,尽情期待!先占个坑. 数组去重的算法有很多种,以下是一种. 思路如下: 定义一个空的对 ...

  2. javascript中数组的常用算法深入分析

    Array数组是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array是前端必修的功课.本文将给大家详细介绍了javascri ...

  3. JavaScript 实现数组去重

    JavaScript 实现数组去重 演示Demo 数组去重 // 方法一 function unique1(a) { var res = []; for (var i = 0, len = a.len ...

  4. JavaScript中数组去重的几种方法

    JavaScript中数组去重的几种方法 正常情况下,数据去重的工作一般都是由后端同事来完成的,但是前端也要掌握好处理数据的能力,万一去重的工作交给我们大前端处理,我们也不能怂呀.现在我总结了一些去重 ...

  5. JavaScript之数组去重

    前言:昨天看到了别人发的帖子,谈到了面试题中经常出现的数组去重的问题.作为一个热爱学习.喜欢听老师话的好孩纸,耳边忽然想起来高中老师的谆谆教导:不要拿到题就先看答案,要先自己思考解答,然后再对照答案检 ...

  6. js jquery数组去重

    数组去重建议直接使用jquery的 $.unique(arr);方法,此外比较好的方法是本文中的unique3方法比较快用了一个hash表,就是所谓的空间换时间.本文还提供了很多其他写法,都是大同小异 ...

  7. JavaScript实现数组去重方法

    一.利用ES6 Set去重(ES6中最常用) function unique (arr) { return Array.from(new Set(arr)) } var arr = [1,1,'tru ...

  8. JavaScript 高性能数组去重

    中午和同事吃饭,席间讨论到数组去重这一问题 我立刻就分享了我常用的一个去重方法,随即被老大指出这个方法效率不高 回家后我自己测试了一下,发现那个方法确实很慢 于是就有了这一次的高性能数组去重研究 一. ...

  9. javascript jquery数组操作小结

    ----------------------------------------------------------定义数组-------------------------------------- ...

随机推荐

  1. zepto的touch模块解决click延迟300ms问题以及点透问题的详解

    大家都知道移动端的click事件会延迟300ms触发,这时大家可以使用zepto的touch模块,里面定义了一个tap事件,通过绑定tap事件,可以实现点击立即触发的功能. 那么,它的tap事件是怎么 ...

  2. oracle sql查询转义下划线

    1,看以下结果 select * from test where login like '%CF_%'; LOGIN------------------------------------------ ...

  3. RegExp对象

    RegExp()构造函数带有两个字符串参数,其中第二个是可选的,如果提供第二个参数,它就指定正则表达式的修饰符.第一个函数包含正则表达式的主题部分,也就是正则表达式直接量中两条斜线之间的文本.无论是字 ...

  4. range()和xrange()区别

    版本:Python2.7 1.先看帮助说明 (1)range()返回一个递增或递减的数字列表,列表的元素由三个参数决定       start 表示列表开始的值,默认为0       stop 表示列 ...

  5. Spring JDBC

    转载:博客主页:http://blog.csdn.NET/chszs 一.概述 在Spring JDBC模块中,所有的类可以被分到四个单独的包:1)core即核心包,它包含了JDBC的核心功能.此包内 ...

  6. 处理数组的forEach map filter的兼容性

    处理数组的forEach //forEach处理 if(!Array.prototype.forEach) { Array.prototype.forEach = function (callback ...

  7. 8086cpu-intel汇编指令简介

    jcxz   有条件跳转指令,cx为跳转条件.如果(cx)==0则跳转到指定标号处.跳转地址在机器码中已相对位置(-128~127)给出. 相当于                if((cx)==0) ...

  8. 关于activity的启动模式

    在Android中每个界面都是一个Activity ,界面的切换实际上是对不同Activity实例化的过程.而启动模式就决定Activity启动运行方式. 1.设置方式它是在主配置文件中,Activi ...

  9. myeclipse10的激活

    myeclipse 提醒了我好几天要激活,今天操作了下,出现的问题分享一下. 在激活工具里面没有找到cracker.jar,按照指导双击run.bat,但是打开之后闪一下就自动关闭了,不得其解.然后搜 ...

  10. iOS修改button的点击范围

    一般来说,按钮的点击范围是跟按钮的大小一样的.若按钮很小时,想增大点击区域,网上通用的方法有①设置btn图片setImage,然后将btn的size设置的比图片大②在btn上添加一个比较大的透明btn ...