方法很巧妙 但是要事先知道对应的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. 构建Maven聚合工程

    最近,准备构建一个Maven的项目,基于模块化的结构思想,决定使用Maven的聚合工程进行构建. 环境准备: (1)eclipse 这里推荐使用spring封装的eclipse(即STS) ,STS中 ...

  2. mysql5.8安装指南

    一.安装mysql yum源 从官网http://dev.mysql.com/downloads/repo/yum/下载mysql最新的yum源的rpm安装包 wget http://repo.mys ...

  3. MIME Type

    一.首先,我们要了解浏览器是如何处理内容的.在浏览器中显示的内容有 HTML.有 XML.有 GIF.还有 Flash --那么,浏览器是如何区分它们,决定什么内容用什么形式来显示呢?答案是 MIME ...

  4. Host 'XXX' is not allowed to connect to this MySQL server 解决方案/如何开启MySQL的远程帐号

    www.cnblogs.com/zhangzhu/archive/2013/08/22/3274831.html 如何开启MySQL的远程帐号-1)首先以 root 帐户登陆 MySQL 在 Wind ...

  5. eclipse中outline中图标的含义

    outline: 实心的代表方法 空心的代表属性 绿色的圆表示公有public 黄色的菱形表示保护protect 红色的方形表示私有private 蓝色的三角表示default 图形后加字母S代表该属 ...

  6. iOS 沙盒(sandbox)结构 使用 实例

    声明:该文档是经过自己查找网上的资料以及自己多年的经验后而总结出来的,希望对大家有所帮助,有什么不恰当支出还请大家多指点! iOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序只能在为 ...

  7. iOS之分别使用代码和storyboard、xib为控件设置圆角(以按钮为例)

    首先我们看一下代码是如何给按钮设置圆角的: 我们再来看看如何在storyboard或xib中给按钮设置圆角: 1.在storyboard或xib中添加按钮后,设置标题和背景色,做好约束: 2.点击 S ...

  8. sugar 自动为DP 加cache (or打表)

    // from http://www.csdn.net/article/2015-12-03/2826381 #include <iostream> #include <tuple& ...

  9. c程序中出现segment error 和 bus error 的原因

    在c程序中,经常会遇到段错误(segment error)和总线错误(bus error),这两种问题出现的原因可能如下 段错误: 对一个NULL指针解引用. 访问程序进程以外的内存空间. 实际上,第 ...

  10. 互联网商业模式O2O、C2C、B2B、B2C等介绍

    O2O是online to offline分为四种运营模式: 1.online to offline是线上交易到线下消费体验 2.offline to online是线下营销到线上交易 3.offli ...