方法很巧妙 但是要事先知道对应的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. Unity5 AssetBundle 打包以及加载

    using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEditor; us ...

  2. MVC项目

    MVC 项目分析: 1.AssemblyInfo.cs  保存管理文件发布的一些属性和版本号 2.Content文件夹(保存相关的样式文件.CSS),scripts文件夹(保存相关的),fonts文件 ...

  3. IPython, Notebook, NumPy, SciPy, matplotlib 和其它

    安装这些工具pip install ipython pip install notebookpip install numpypip install scipypip install matplotl ...

  4. Android用ImageView显示本地和网上的图片

    ImageView是Android程序中经常用到的组件,它将一个图片显示到屏幕上. 在UI xml定义一个ImageView如下: public void onCreate(Bundle savedI ...

  5. C语言学习笔记(二)_system系统调用及posix说明

    1.9 System系统调用 System库函数的功能是执行操作系统的命令或者运行指定的程序.system库函数的调用需要#include<stdlib.h>这个头文件. #include ...

  6. 一看就懂得移动端rem布局、rem如何换算

    这里使用了js控制根元素的font-size大小,然后进行rem换算,在js代码后面会说明以下问题. 1.如何进行rem运算? 2.如果纯js控制根元素用rem布局会出现的小问题,如何解决? 3.如有 ...

  7. C# 根据前台校验的值,决定是否执行后台方法

    <asp:Button ID="Add" runat="server" Text="加入" class="add" ...

  8. C#中的?和??的用法

    1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; 是正确的,int i=null; 编译器就会报错.为了使值类型也 ...

  9. VScode常用几个前端插件live HTML previewer和debugger for chrome的配置

    之前一直都是用sublime Text和chrome配合来写前端的页面,自从知道了有liveReload这个神奇的插件之后感觉爽翻了啊.好吧跑远了........ 话说最近微软搞了个VScode,听说 ...

  10. 把vim当做golang的IDE

    开始决定丢弃鼠标,所以准备用vim了. 那么在vim里面如何搭建golang环境呢? git盛行之下,搭建vim环境是如此简单. 而且vim搭建好了之后,基本上跟IDE没有差别. 高亮.自动补全.自动 ...