JS学习笔记——数组去重

<script type="text/javascript">

//indexOf”是ECMAScript5方法,IE8以下不支持,需多写兼容低版本浏览器代码。
Array.prototype.indexOf=Array.prototype.indexOf|| function(item){
    for(var i=0;i<this.length;i++)
    {
        if(this[i]===item)
        {
            return i;
        }
    }
    return -1;
}
var obj={
    name:‘312‘
}
function newobj(){

}
var a=[0,0,new String(1), new Number(1),obj,obj,new newobj(),new newobj()];

Array.prototype.forEach = Array.prototype.forEach || function(callback, thisArg) {
    if (!callback || typeof callback !== ‘function‘) return;

    for (var i = 0, j = this.length; i < j; i++) {
        callback.call(thisArg, this[i], i, this);
    }
}

function removeDuplicatedItem1(arr)
{
    var ret=[];
    for(var i=0;i<arr.length;i++)
    {
        if(ret.indexOf(arr[i])===-1)
        {
            ret.push(arr[i]);
        }
    }
    return ret;
}  // 0 1  1 [object object] [object object ][object object] 

function removeDuplicatedItem2(arr)
{
    var ret=[];
    arr.forEach(function(e,i,arr){
        if(arr.indexOf(e)===i)
            ret.push(e);
    });
    return ret;
} //// 0 1  1 [object object] [object object ][object object] 

function removeDuplicatedItem3(ar) {
    var ret = [],
        end;
    ar.sort();
    end = ar[0];
    ret.push(ar[0]);

    for (var i = 1; i < ar.length; i++) {
        if (ar[i] !== end) {
            ret.push(ar[i]);
            end = ar[i];
        }
    }

    return ret;
}// 0 1  1 [object object] [object object ][object object] 

//上述都做了两次循环  因此需要优化

function removeDuplicatedItem4(arr)//unique([ new String(1), new Number(1) ])  无法判断
{
    var tem={};
    var ret=[];
    for(var i=0;i<arr.length;i++)
    {
        var item=arr[i];
        var key=typeof(item)+item; //因为对象只能存放字符串,所以要区分  1  ‘1‘
        if(!tem[key])
        {
            tem[key]=1;
            ret.push(item);
        }
    }
    return ret;
} //0 1 [object object]

</script>
时间: 2024-10-29 19:08:04

JS学习笔记——数组去重的相关文章

JS学习笔记-数组

ECMAScript中没有提供类和接口等的定义,但它却是一门面向对象的语言,由于它能够通过其它 方式实现类似高级语言的面向对象功能,这些内容将在后面的文章中进行一步步的总结.此篇仅对JS中对象作简要说明,重点汇总一些类似于对象的数组的经常用法. 对象 创建 上篇提到创建对象的两种方式: 使用new运算符创建Object var obj = new Object(); 使用字面量方式创建 var   obj = {}; 这里值得注意的是在使用字面量(常量)创建Object时不会调用构造函数. 属性

js学习笔记——数组方法

join() 把数组中所有元素转化为字符串并连接起来,并返回该字符串, var arr=[1,2,3]; var str=arr.join("#"); //str="1#2#3"; 如果没有指定分隔符,则默认为逗号 var str2=arr.join(); //str2="1,2,3"; reverse() 在原数组上把元素的顺序颠倒过来,并返回该数组 var arr=[1,2,3]; arr.reverse(); //arr=[3,2,1];

【转】Backbone.js学习笔记(二)细说MVC

文章转自: http://segmentfault.com/a/1190000002666658 对于初学backbone.js的同学可以先参考我这篇文章:Backbone.js学习笔记(一) Backbone源码结构 1: (function() { 2: Backbone.Events // 自定义事件 3: Backbone.Model // 模型构造函数和原型扩展 4: Backbone.Collection // 集合构造函数和原型扩展 5: Backbone.Router // 路由

每日js学习笔记2014.5.4

<script language="javascript">var mystring = "这是第一个正则表达式的例子";var myregex = new RegExp("这是"); //创建正则表达式if (myregex.test(mystring)) //test的功能是查找字符串中是否有匹配项,有则返回true,没有则返回false{ document.write ("找到了指定的模式");}else{

JS学习笔记-JSON

JSON(JavaScriptObject Notation)-JS对象表示法,是JavaScript的一个严格子集,它是一种开发式和基于文本的数据交换格式,因此JSON并不是JS独有,其他很多语言也可以对JSON进行解析和序列化. 特点: 1.轻量级-易于阅读和编写,同时易于及其解析和生成 2.可表示类型: (1)简单值:字符串.数值.布尔值.null,不支持特殊值JS中的undefined (2)对象 { "user" : "Admin", "age&

【JS学习笔记】js中关于传地址的问题

我觉得初学者应该会遇到很多这样的问题 条件1.不想定义全局变量的时候 条件2.定义了外围变量却又要引用并且修改其中内容的时候 以下转一篇文章 -------------------------------------------------------------------------------------------------------------------------------------------------------- 很多人,包括我,受书本知识消化不彻底的影响,认为 J

JS学习笔记-BOM之window

BOM:BrowserObjectModel,浏览器对象模型,提供JS中对浏览器的各种操作的对象,是JS应用中唯一没有相关标准的部分,这事BOM经常出现问题的所在,主要用于处理浏览器窗口与框架,浏览器特有的JS扩展也被默认为BOM的一部分,而各浏览器之间的公有对象就成了默认的标准.本篇文章将主要介绍window对象. 属性 世界上本没有模型,用的多了也就成了模型.模型便是一个可供参考的东西,BOM中的一系列通用的对象便构成了这个模型,其结构可展示为: window的六大属性,同时它们也是对象:

Vue.js学习笔记:在元素 和 template 中使用 v-if 指令

f 指令 语法比较简单,直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <script src="https://cdn.bootcss.com/vue/2.2.

[Pro Angular.JS]学习笔记1.1:设置开发环境

可以使用yeoman.io,很方便.我已经写了一篇随笔,介绍如何使用.这里也有一篇介绍的文章:http://www.cnblogs.com/JoannaQ/p/3756281.html 代码编辑器,在Mac下用了一下WebStorm,太恶心了.另外发现书的作者使用的开发环境是Windows + VS Express 2013,为了方便学习,我也使用VS Express 2013 Update2.VS2013用起来蛮舒服的,把WebStorm比得跟驼屎一样.也许是因为我没用习惯吧. 1.安装Nod