方法很巧妙 但是要事先知道对应的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. C# Iterator迭代器的实现方式

    C#发展到今天又三种方式实现迭代: 1.非泛型非 yield,这个较简单,代码如下: using System; using System.Collections.Generic; using Sys ...

  2. iOS点击状态栏返回顶部问题。

    在适配点击状态栏返回顶部的时候,有一个viewcontroller里面有一个UITableView和一个UITextView,UITableView的cell里面没有UIScrollView和UITa ...

  3. URLError 异常处理

    3 URLError 首先解释下 URLError 可能产生的原因: 网络无连接,即本机无法上网 连接不到特定的服务器 服务器不存在 在代码中,我们需要用 try-except 语句来包围并捕获相应的 ...

  4. centos7安装openoffice

    [摘要:间接登录openoffice民网下载硬件包,但跳转的页里却不停挨没有开.末了只能正在末端里干活下了: 1. 挑选得当的版本:http://www.openoffice.org/download ...

  5. 浅析jquery ui的datepicker组件

    今天计划在博客上添加一个日历,方便用户查看日期.Google了一圈,最终决定使用jquery ui的datepicker部件实现.原因有三:Datepicker使用配置比较简洁,几行代码就可以得到一个 ...

  6. jquery实现淡入淡出

    fade方法包括四个: (1)fadeIn(speed,callback):淡入的方法,speed代表淡入的速度,可以是slow,fast,毫秒,不填等 例如: $(document).ready(f ...

  7. 驱动开发学习笔记. 0.02 基于EASYARM-IMX283 烧写uboot和linux系统

    驱动开发读书笔记. 0.02 基于EASYARM-IMX283 怎么烧写自己裁剪的linux内核?(非所有arm9通用) 手上有一块tq2440,但是不知道什么原因,没有办法烧boot进norflas ...

  8. myeclipse中如何导入mysql-connector-java-5.1.8-bin.jar【环境配置和工具使用】

    前提:我建立了一个java project,工程名字为Test,现在需要连接mysql数据库,所以提前从网上将java操作mysql数据库的mysql-connector-java-5.1.8-bin ...

  9. codeforces 742E (二分图着色)

    E. Arpa's overnight party and Mehrdad's silent entering Note that girls in Arpa's land are really at ...

  10. Ajax 知识点

    AJAX 即"Asynchronous Javascript And XML"(异步JavaScript和XML) Ajax 不是某种编程语言,只是一种在无需重新加载整个网页的情况 ...