过滤重复值是数组中一个常用到的功能了,我们这里可以利用遍历来进行操作,希望此文章对各位有帮助。

JavaScript是无类型语言,数组元素可以具有任意的数据类型,同一个数组的不同元素可以具有不同类型。数组的元素设置可以包含其他数组,便于模拟创建多维数组。

一、jquery源码中常见的知识点

例1

 

  1.string,number类型转换的快捷方法

 代码如下

1.创建数组

复制代码 代码如下:

复制代码

在JavaScript中,创建数组可以使用两种方式

// @param s为字符串,n为数字
function fn(obj){
    //转换为String类型
    var s = obj +””;
    //转换为number类型
    var n = +obj;
}

<script type=”text/javascript”>
    Array.prototype.del = function() {
        var a = {}, c = [], l = this.length;
        for (var i = 0; i < l; i++) {
            var b = this[i];
            var d = (typeof b) + b;
            if (a[d] === undefined) {
                c.push(b);
                a[d] = 1;
            }
        }
        return c;
    }
    var myArr=[‘text’,’text’,’5′,’2′,’2′,’3′,’4′,’5′,’5′];
    document.write(myArr.del());
          
</script>

(1)使用 “[]” 创建。

  分享一个面试例子:

例2

<script type=”text/javascript”>

var arr=[];  //创建空数组

var arr=[‘北京’,0,true,’上海’,’代码里’,’www.daimali.com’];
//创建带初始值的数组

</script>

//加会将其后面自动转换成字符串
“64”+4=”644″
//减会将其自动转换成数字
“64”-4=60

 代码如下

(2)使用 new 关键字创建数组对象 Array()。

  2.bool类型转换

复制代码

在JavaScript 1.1 版本之后,一般使用 new 关键字

  !!obj,将其强制转换为bool类型

<script type=”text/javascript” language=”javascript”>
function filterArray(array){
 var key = 0; //初始化键值
 var arr = new Array(); //声明一个数组
 var num = array.length; //数组长度
 for(var i = 0 ;i < num;i++){ //对数组进行交叉对比
 
//当对重复的值对比时,避免对比当前自己,需要在当前的基础上+1,比如array[0],array[1],如果对比array[0]的时候并不是拿自身array[0],而是array[1]
  for(var j = i+1;j < num;j++){
   if(array[i] == array[j]){ //将交叉的数组对比
    array[i] = null; //如果相等则 unset
    break; //并跳出
   } 
  }
 }
 
 for(var i = 0;i<num;i++){  //将数组进行for遍历
  if(array[i]){ //判断是否为空
   arr[key++] = array[i]; //将过滤后的数组给新数组arr赋值
  }
 }
 return arr;

</script>

<script type=”text/javascript”>

var arr=new Array();  //创建空数组

var arr=new Array(‘北京’,0,true,’上海’,’代码里’,’www.daimali.com’);
//创建带初始值的数组

</script>

复制代码 代码如下:

调用方法

 

alert(!!0)  //结果为false
alert(!!”33dd”)  //结果为true

 代码如下

2.数组元素

  !obj,取相反的bool类型

复制代码

JavaScript中数组的元素可以是任何类型的数据。

复制代码 代码如下:

<script type=”text/javascript” language=”javascript”>
var arrDemo = new Array(1,2,1,1,4,6,7,1,2,6,11,21,11);
console.log(filterArray(arrDemo));
alert(filterArray(arrDemo));
</script>

(1)数组长度。

alert(!0)  //结果为true
alert(!”222333″)  //结果为false

例1 代码如下 复制代码 script t…

JavaScript数组的长度是可变的,可以通过Length属性获得。

  3.=== 与 ==区别

<script type=”text/javascript”>

var a=new Array();  //创建空数组

var b=new Array(‘北京’,0,true,’上海’,’代码里’,’www.daimali.com’);
//创建带初始值的数组

a.Length  //长度为0

b.Length //长度为6

</script>

  === 是严格相等,不会进行类型转换,而 ==
是不严格相等,会进行类型转换。有些js的书中,建议开发人员永远不要用 ==
或者 != 。

 

  但是jquery源码中,有用到“==”或者“!=”的情况 —— 判断 undefined 和 null
的时候。

(2)访问数组元素

复制代码 代码如下:

JavaScript中访问数组的元素使用 []
运算符,可以通过下标和关键字访问。遍历数组的元素可以使用循环语法或for..in语句。

//这里的判断,将obj是null,obj是undefined都排除在外了
if(obj != null){
}

<script type=”text/javascript”>

var arr=new Array(‘北京’,0,true,’上海’,’代码里’,’www.daimali.com’);
//创建带初始值的数组

writeln(‘第一个元素值为:’+arr[0]);//输出 北京

</script>

  4.检测obj是否为window对象

for…in

复制代码 代码如下:

for(i in arr)

{

document.writeln(‘元素值为:’+arr[i]); //遍历输出数组值

}

//null == window.null为true
function isWindow(obj){
    return obj != null && obj == window.obj;
}

 

  5.|| 与 && 用法技巧

3.多维数组

复制代码 代码如下:

JavaScript中本来没有多维数组,但数组元素可以是任何类型的数据甚至另一个数组,可以非常方便的模拟多维数组。

//例 var aa=5; name = aa || {} ; alert(name) 则name为55
this.name = name || {} //如果name值存在,则值为name,反之为{}
//例 var aa=5; name = aa && {} ; alert(name)
则name为{},因为aa为5,不为0则为真
this.name = bool && [] //如果bool为true,则值为[],反之则为bool

(1)使用 new Array()创建多维数组

  经典实例:

<script type=”text/javascript”>

var array1;  var array2;

function createArr()

{

var one = new Array(3);

for(var i=0; i<one.length; i++)

{

one[i] = new Array(4);

for(var j=0;j< one[i].length; j++)

{

one[i][j] =(i+1) * (j+1);//为数组元素赋值

}

}

return one;// 返回创建的多维数组

}

</script>

复制代码 代码如下:

 

( window.foo || ( window.foo = “bar” ) );
                alert(window.foo);  //弹出  bar
//  为什么最后的结果是bar呢,其实可以看成是   undefined || bar 
出来的结果肯定是bar

(2)使用 [] 创建多维数组

  6.setTimeout(fn,0)与setTimeout(fn)区别

array1=[ [1,2,3] , [5,8,9] , [7,’北京’,8] ] //就是这么简单…

  setTimeout(fn,0)与setTimeout(fn)都是延迟执行,但是setTimeout(fn)比setTimeout(fn,0)延迟时间还要长,例

获取值得方式也简单: array1[0][1] => 1,

复制代码 代码如下:

array1[0][2] => 2,

        function fn(){
            var data = new Date();
            for(var i=0;i<=1000;i++){
                if(i==1000){
                    console.log(“fn=”+data.getTime());
                }
            }
        }
        function fn1(){
            var data = new Date();
            for(var i=0;i<=1000;i++){
                if(i==1000){
                    console.log(“fn1=”+data.getTime());
                }
            }
        }
        setTimeout(fn,0),
        setTimeout(fn1);

array1[2][1] => 北京

  结果:

 

图片 1

4.数组排序

  7.判断是否为数值

在JavaScript中,数组可以直接使用Array对象的sort()方法,该方法允许传递一个排序函数作为参数。不过不传递参数,则按照
ASCII 字符顺序升序排序;否则,传递给该方法的函数必须返回负数,0
或正数,返回值表示相邻两个元素的比较结果,sort()方法按照比较结果排序。

复制代码 代码如下:

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注