精华内容
下载资源
问答
  • JS数组

    2016-09-18 13:43:29
    来源《JavaScript权威指南》 ... ...(1)JS数组是无类型的:数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的类型。...(2)JS数组的索引是基于0 的32位数值。...(4)JS数组可能是稀疏

    来源《JavaScript权威指南》




    (1)JS数组是无类型的:数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的类型。
    (2)JS数组的索引是基于0 的32位数值。
    (3)JS数组是动态的,长度会根据需要动态增长或缩减。
    (4)JS数组可能是稀疏的:数组元素的索引不一定要连续,他们之间可以有空缺。
    (5)JS数组是JS对象的特殊形式。
    (6)JS数组继承自 Array.prototype中的属性,它定义了一套丰富的数组操作方法。

    一、创建数组
    (1)数组直接量[ ]
    如果省略数组直接量中的某个值,省略的元素将被赋予undefined值。
    允许有可选的结尾的逗号,故[ , , ]只有两个元素而非三个。

    (2)构造函数创建数组
    var a = new Array(); //空数组
    var a = new Array(10); //指定长度为10
    var a = new Array(5, 4, 3, 2, 1, "testing, testing"); //指定元素

    二、数组元素的读和写
    使用[ ]
    注意:可以使用负数或者非整数来索引数组。这时候,数值转换成字符串,字符串作为属性名来用。


    三、稀疏数组
    四、数组长度length
    (1)数组长度会自动增加。
    (2)设置length属性为一个小于当前长度的非负整数n时,当前数组中的那些索引值大于或者等于n的元素将从中删除。
    (3)可以使用Object.defineProperty()设置数组的length属性为只读。

    五、数组元素的添加和删除
    Array 对象方法
    方法 描述
    concat() 连接两个或更多的数组,并返回结果。
    join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
    pop() 删除并返回数组的最后一个元素
    push() 向数组的末尾添加一个或更多元素,并返回新的长度。
    reverse() 颠倒数组中元素的顺序。
    shift() 删除并返回数组的第一个元素
    slice() 从某个已有的数组返回选定的元素
    sort() 对数组的元素进行排序
    splice() 删除元素,并向数组添加新元素。
    toSource() 返回该对象的源代码。
    toString() 把数组转换为字符串,并返回结果。
    toLocaleString() 把数组转换为本地数组,并返回结果。
    unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
    valueOf() 返回数组对象的原始值

    六、数组遍历
    (1)使用优化的for循环
    for(var i = 0, len = arr.length; i < len; i++) {
    //操作
    }
    for(var i = 0, len = arr.length; i < len; i++) {
    if( !arr[i] ) continue; //跳过null、(undefined和不存在的元素)
    //循环体
    }
    for(var i = 0, len = arr.length; i < len; i++) {
    if( arr[i] == undefined ) continue; //跳过(undefined和不存在的元素)
    //循环体
    }
    for(var i = 0, len = arr.length; i < len; i++) {
    if( ! (i in arr) ) continue; //跳过 不存在的元素
    //循环体
    }

    (2)使用for/in循环处理稀疏数组。
    for(var index in sparseArray) {
    var value = sparseArray[index];
    //此处可以使用索引和值做事情
    }
    注意:使用for/in循环能够枚举继承的属性名。‘
    过滤方法:
    for (var i in a) {
    if( !a.hasOwnProperty(i)) continue; //跳过继承的属性
    //循环体
    }

    (3)使用forEach()
    var data = [1,2,3,4,5];
    var sum = 0;
    data.forEach(function(x) {
    sum += x;
    });
    console.log(sum);

    七、多维数组 matrix[x][y]
    八、数组方法
    在Array.prototype中定义了一些操作数组的方法,他们可以被任何数组使用。

    九、ECMAScript 5中的数组方法
    写在前面:每个方法的第一个参数都是一个函数,函数中最多有三个参数:s数组元素、元素的索引、数组本身。
    (1)forEach( )
    从头至尾遍历数组,为每个数组元素调用指定的函数。

    (2)map()
    将调用的数组的每个元素传递给指定的函数,并返回一个数组,它包含该函数的返回值。

    (3)filter()
    该方法返回的数组元素是调用的数组的一个子集。

    (4)every()和some()
    用来数组的逻辑判定:他们对数组元素应用指定的函数进行判定,返回true或者false。



    (5)reduce()和reduceRight()
    使用指定的函数将数组元素进行组合,生成单个值。 使用例子??

    (6)indexOf()和lastIndexOf()
    搜索整个数组中具有给定值的元素,返回找到的第一个元素的索引,如果没有找到返回-1。
    indexOf()正向,lastIndexOf()反向。


    十、数组类型
    判断是不是数组的方法:
    ECMAScript 5 中使用Array.isArray( )判断。
    例子:






    展开全文
  • js数组简单去重,js数组根据对象中的元素去重

    js数组简单去重

    var arr1 = [1, 2, 3, 4, 5, 6, 3, 4, 3];
    function arrayUnique1(arr) {
    	var result = [], hash = {};
    	for (var i = 0, elem; (elem = arr[i]) != null; i++) {
    		if (!hash[elem]) {
    			result.push(elem);
    			hash[elem] = true;
    		}
    	}
    	return result;
    }
    console.log(arrayUnique1(arr1));
    结果:



    js数组根据对象中的元素去重

    var arr2 = [
    	{ name: "name1", num: "1" },
    	{ name: "name2", num: "11" },
    	{ name: "name3", num: "12" },
    	{ name: "name4", num: "13" },
    	{ name: "name2", num: "1" },
    	{ name: "name6", num: "12" }
    ]
    
    function arrayUnique2(arr, name) {
    	var hash = {};
    	return arr.reduce(function (item, next) {
    		hash[next[name]] ? '' : hash[next[name]] = true && item.push(next);
    		return item;
    	}, []);
    }
    
    console.log(arrayUnique2(arr2, "name"));
    console.log(arrayUnique2(arr2, "num"));
    结果:

    展开全文
  • 1、js数组往队尾添加数据可以用数组API Array.prototype.push 可以往数组尾部添加元素 2、js数组往队尾添加数据可以用数组API  Array.prototype.pop 可以把数组尾部的元素 弹出 3、有时候,我们需要从队头...

    1、js数组往队尾添加数据可以用数组API

    Array.prototype.push 可以往数组尾部添加元素

    2、js数组往队尾添加数据可以用数组API  

    Array.prototype.pop 可以把数组尾部的元素 弹出

    3、有时候,我们需要从队头添加数据或者从队头移出数据,我们可以这样扩展Array 的API

    Array.prototype.pushHead = function(){
    	for(var i = 0 ;i<arguments.length;i++){
    		this.splice(i,0,arguments[i]);
    	}
    }
    Array.prototype.popHead = function(count){
    	if(typeof count === "undefined"){
    		this.splice(0,1);
    	}
    	if(typeof count === "number"){
    		this.splice(0,count);
    	}
    }
    这段代码很简单,就是用了 js数组自带的API Array.prototype.splice 方法进行扩展,这个方法可以在数组任意位置删除元素然后在该位置插入指定元素。

    简单说下splice api,

    函数参数为(deleteIndex,deleteCount,insertOption1,insertOption2....),第一个参数为 删除元素的下标,第二个参数为删除的个数,第三及其后面的元素为插入的元素。

    看一下效果:



    展开全文
  • js数组

    千次阅读 2013-03-17 15:42:57
    1、创建数组 var array = new Array(); var array = new Array(size);//指定数组的长度 var array = new Array(item1,item2……itemN);//创建数组并赋值 2、取值、赋值 var item = array[index];//获取指定...

    1、创建数组
    var array = new Array();
    var array = new Array(size);//指定数组的长度
    var array = new Array(item1,item2……itemN);//创建数组并赋值

    2、取值、赋值
    var item = array[index];//获取指定元素的值
    array[index] = value;//为指定元素赋值

    3、添加新元素
    array.push(item1,item2……itemN);//将一个或多个元素加入数组,返回新数组的长度
    array.unshift(item1,item2……itemN);//将一个或多个元素加入到数组的开始位置,原有元素位置自动后移,返回 新数组的长度
    array.splice(start,delCount,item1,item2……itemN);//从start的位置开始向后删除delCount个元素,然后从start的位置开始插入一个或多个新元素

    4、删除元素
    array.pop();//删除最后一个元素,并返回该元素
    array.shift();//删除第一个元素,数组元素位置自动前移,返回被删除的元素
    array.splice(start,delCount);//从start的位置开始向后删除delCount个元素

    5、数组的合并、截取
    array.slice(start,end);//以数组的形式返回数组的一部分,注意不包括 end 对应的元素,如果省略 end 将复制 start 之后的所有元素
    array.concat(array1,array2);//将多个数组拼接成一个数组

    6、
    数组的排序
    array.
    reverse();//数组反转
    array.
    sort();//数组排序,返回数组地址

    7、数组转字符串
    array.
    join(separator);//将数组原因用separator连接起来

    列了这么都就是没有发现删除数组元素的方法!于是查了一些资料找到了解决方法。
    删除数组元素需要扩展Array原型prototype.

    Array.prototype.del=function(index){
      if(isNaN(index)||index>=this.length){
        return false;
      }
      for(var i=0,n=0;i<this.length;i++){
      if(this[i]!=this[index]){
      this[n++]=this[i];
      }
      }
      this.length-=1;
    };

    js 删除数组几种方法


    小结:

    var arr = [ 1, 2, 3, 4, 5 ];
    //原始数组
    alert("原始数组:" + arr);// 1,2,3,4,5
    //删除并且返回第一个元素
    alert("执行arr.shift() 返回 :" + arr.shift());//1
    alert("数组:" + arr);//2,3,4,5
    //删除并且返回最后一个元素
    alert("执行arr.pop() 返回:" + arr.pop());//5
    alert("数组:" + arr);//2,3,4
    //在数组开头添加一个或者多个元素,返回数组新长度
    alert("执行arr.unshift('one') 返回:" + arr.unshift("one"));//4
    alert("数组:" + arr);//one,2,3,4
    //在数组尾部添加一个或者多个元素,返回数组新长度
    alert("执行arr.push('end') 返回:" + arr.push("end"));//5
    alert("数组:" + arr);//one,2,3,4,end
    //从第i个位置开始删除n个元素,返
    arr.splice(0, 1);
    alert("执行arr.splice(0,1) ");
    alert("数组:" + arr);//2,3,4,end
    //从第i个位置开始,删除n个元素,并且在这个位置插入s个元素
    arr.splice(0, 0, "one");
    alert("执行arr.splice(0,0,'one')");
    alert("数组:" + arr);//one,2,3,4,end


    var arr=['a','b','c'];

      若要删除其中的'b',有两种方法:

      1.delete方法:delete arr[1]

      这种方式数组长度不变,此时arr[1]变为undefined了,但是也有好处原来数组的索引也保持不变,此时要遍历数组元素可以才用

      

    for(index in arr)
    {
       document.write('arr['+index+']='+arr[index]);
    }

      

    这种遍历方式跳过其中undefined的元素

      * 该方式IE4.o以后都支持了

      2.数组对象splice方法:arr.splice(1,1);

      这种方式数组长度相应改变,但是原来的数组索引也相应改变

      splice参数中第一个1,是删除的起始索引(从0算起),在此是数组第二个元素

      第二个1,是删除元素的个数,在此只删除一个元素,即'b';

      此时遍历数组元素可以用普通遍历数组的方式,比如for,因为删除的元素在

      数组中并不保留

      * 该方法IE5.5以后才支持

      值得一提的是splice方法在删除数组元素的同时,还可以新增入数组元素

      比如arr.splice(1,1,'d','e'),d,e两个元素就被加入数组arr了

      结果数组变成arr:'a','d','e','c' 

      <big>外一篇:</big>

      JavaScript通过设置数组的length属性来截断数组是惟一一种缩短数组长度的方法.如果使用delete运算符来删除数组中元素,虽然那个元素变成未定义的,但是数组的length属性并不改变两种删除元素,数组长度也改变的方法.

      /*
      * 方法:Array.remove(dx)
      * 功能:删除数组元素.
      * 参数:dx删除元素的下标.
      * 返回:在原数组上修改数组
      */
      
     //经常用的是通过遍历,重构数组.
     

    Array.prototype.remove=function(dx)
     {
      if(isNaN(dx)||dx>this.length){returnfalse;}
      for(var i=0,n=0;i<this.length;i++)
      {
        if(this[i]!=this[dx])
        {
          this[n++]=this[i]
        }
      }
      this.length-=1
     }
     a = ['1','2','3','4','5'];
     alert("elements: "+a+"nLength: "+a.length);
     a.remove(0) //删除下标为0的元素
     alert("elements: "+a+"nLength: "+a.length);
    /*
      * 方法:Array.baoremove(dx)
      * 功能:删除数组元素.
      * 参数:dx删除元素的下标.
      * 返回:在原数组上修改数组.
     
    */
      
     //我们也可以用splice来实现.
      
     Array.prototype.baoremove = function(dx)
     {
      if(isNaN(dx)||dx>this.length){returnfalse;}
      this.splice(dx,1);
     }
     b = ['1','2','3','4','5'];
     alert("elements: "+b+"nLength: "+b.length);
     b.baoremove(1); //删除下标为1的元素
     alert("elements: "+b+"nLength: "+b.length);

    我们知道,在IE5或更低的版本中,JavaScript的Array(数组)对象并未提供现成的删除数组元素的方法。在IE5.5+的版本中,虽然有splice方法,但是并不是删除某一项(或几项),而仅仅是将某一项(或几项)的值清除,也就是说该项仍然存在,数组的长度并没有改变。

      事实上,我们可以自己为数组增加一个删除方法(注意,这里指的是将数组的某一项真正的从数组成员中移除)。或许你会想到用循环来为数组重新赋值,这样做当然可以,但效率很低。

      下面我们介绍利用Array对象的两个方法slice、concat来自定义删除数组的方法。

      具体代码如下,请注意里面的注释。

    --------------------------------------------------------------

    Array.prototype.del=function(n) { //n表示第几项,从0开始算起。
    //
    prototype为对象原型,注意这里为对象增加自定义方法的方法。
     if(n<0) //如果n<0,则不进行任何操作。
      return this;
     else
      return this.slice(0,n).concat(this.slice(n+1,this.length));
      /*
       concat方法:返回一个新数组,这个新数组是由两个或更多数组组合而成的。
             这里就是返回this.slice(0,n)/this.slice(n+1,this.length)
             组成的新数组,这中间,刚好少了第n项。
       slice方法: 返回一个数组的一段,两个参数,分别指定开始和结束的位置。
      
    */
    }
    //我们来试一试这个自己增加的方法
    var test=new Array(0,1,2,3,4,5);
    test=test.del(3); //从0算起,这里也就是删除第4项。
    alert(test);
    展开全文
  • 下面总结几种js数组和对象深浅拷贝的几种方式: 一、es5实现数组和对象的浅拷贝与深拷贝 1.数组和对象浅拷贝: function shallowCopy(source){ if (typeof source !== 'object') { throw TypeError('the ...
  • 当用到.net 时,很多新手都为如何解决.cs文件里数组赋值给.aspx中js数组的问题。我也是百度了N久,结果没有特别明确的答案,然后问了专业人士,又自己实践了一下,才搞出来的。现在给大家一个详细的例子来说明下这个...
  • JS数组遍历的几种方法

    万次阅读 多人点赞 2019-04-27 08:51:25
    for     最简单的一种循环遍历方法,也是使用频率最高的一种,可优化 var arr = [1, 2, 3, 4, ...    优化:使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显 var...
  • 常用的JS数组去重方法大全

    千次阅读 多人点赞 2020-04-04 13:43:45
    我们要想使用数组去重,那就必须对数组有一定的了解,关于JS数组的一些方法以及使用,可参考: ①JavaScript 内置对象之-Array ②ES5新增数组方法 ③浅谈JavaScript中ES6新增的Set和Map结构以及Array.from方法 ...
  • js数组去重的10种方法

    万次阅读 多人点赞 2018-08-07 20:23:34
    Methods 1: 思路:定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。 function unique(arr) { let newArr = [arr[0]]; for (let i = 1; i &lt; ...
  • Js 数组筛选重复项

    万次阅读 2018-04-09 14:37:16
    js数组去重复:Array.prototype.distinct = function () { var arr = this, result = [], i, j, len = arr.length; for (i = 0; i &lt; len; i++) { for (j = i + 1; j &...
  • 微信小程序开发交流qq群 173683895 承接微信小程序开发。...js数组简单去重 var arr1 = [1, 2, 3, 4, 5, 6, 3, 4, 3]; function arrayUnique1(arr) { var arr1 = [], obj = {}; fo...
  • js数组合并

    千次阅读 2019-07-09 11:12:50
    js数组合并的方法 1.for循环遍历其中一个数组,把该数组中的所有元素依次push到另外一个数组中 let arr1 = [1,2,3]; let arr2 = [4,5,6]; arr1.foreach(v,i)=>{ return arr2.push(v) } 2.concat方法,连接两个...
  • js 数组深度拷贝详解

    万次阅读 2019-08-23 10:29:09
    js 数组深度拷贝详解 1.我们已经知道的深拷贝和浅拷贝的区别,在于,深拷贝是拷贝值的同时拥有一个新的存储地址,而浅拷贝只是拷贝了值,而存储地址不变;这样会导致的问题是修改拷贝的值,会同时修改原数组; 但是...
  • js数组对象根据id去重

    2020-12-24 16:47:23
    js数组对象根据id去重js数组对象根据id去重例子 js数组对象根据id去重 例子 var arr = [{ key: '01', value: '乐乐' }, { key: '02', value: '博博' }, { key: '03', value: '淘淘' }, { key: '04', ...
  • 1、java的数组是强类型,js的数组是弱类型 2、js数组兼具有java数组与araaylist的有点 3、js和java数据都是对象
  • js数组降维

    2018-11-08 15:27:17
    js数组从二维降到一维 首先大家需要了解一下这两个方法 arr作为apply方法的第二个参数,本身是一个数组,数组中的每一个元素(还是数组,即二维数组的第二维)会被作为参数依次传入到concat中,效果等同于[ ]....
  • js数组长度

    千次阅读 2019-01-28 21:49:10
    js数组长度 &lt;script&gt; var a = ["js", "java", "c", "c++", "php", "python"]; var b = a.length; document.write(b); &lt;/...
  • js数组转对象

    万次阅读 2018-07-18 13:43:39
    js数组转对象 1.js var list = {}; var arr = ["123","456","789"]; for (var key in arr) { list[key] = arr[key]; } console.log(list); 效果:
  • 原生js数组拉平

    千次阅读 2018-10-13 00:32:38
    一个原生js数组拉平小技巧 给大家分享一个自己写的原生js数组拉平,由于是Array原型链的扩展,只要引入代码后,数组都能调用到这个方法 Array.prototype.flatArr = function(){ var arr = []; //定义hanle函数方便...
  • java数组和js数组

    2016-12-19 14:44:08
    java定义数组的几种方法 String[] aArray = new String[5]; String[] bArray = {"a","b","c", "d", "e"}; String[] cArray = new String[]{"a","b","c","d","e"};...js数组 var mycars=new Array() myc
  • js数组常用方法,易错点总结。数组独立拷贝;数组相等的判定;
  • js数组怎么删除指定元素?

    千次阅读 2019-11-13 10:55:46
    js数组是js部分非常重要的知识,有时我们有这么个需求js数组删除指定元素,先定义一个函数来获取删除指定元素索引值,然后用js数组删除的方法,来删除指定元素即可,就两步不难,很简单。 1、JS的数组对象定义一...
  • js 数组大小排序

    千次阅读 2017-08-21 21:50:19
    js 数组大小排序 从小到大排序
  • js 数组后面追加一个数组,连接数组

    千次阅读 2020-03-26 13:41:14
    js 数组后面追加一个数组,连接数组
  • 原生js数组排序

    千次阅读 2019-02-01 17:41:33
    原生js数组排序 js 排序 以正序为例(即由小到大) var arr = [0,2,1,4,3,9,6,5,7,8]; // 未排序的数组 var sortArr = null; // 排序后得到的数组 1 sort排序 sortArr = arr.sort(function (a,b) { return a - b ...
  • JS数组方法总结大全

    千次阅读 2020-06-16 17:25:09
    js数组方法总结 JavaScript语言里给数组提供了很多好用的方法对数组进行操作,用起来非常方便,在此总结记录一下。 一.数组创建 1.使用 Array 构造函数: var arr1 = new Array(); //创建一个空数组 var arr2 = new...
  • js数组中深拷贝的方法

    万次阅读 2019-06-06 17:07:35
    一、什么是浅拷贝  在js当中,我们常常遇到数组复制的的情况,许多人一般都会使用“=”来直接把一个数组赋值给一个变量,如 ...把数组a用等号“=”的形式复制给变量b,这种就是js数组的浅拷贝。然...
  • js 数组操作 会修改原数组的 方法

    千次阅读 2019-07-15 10:23:28
    js 数组操作 会修改原数组的 方法 1.pop() 删除 数组 最后一个元素; 2.shift() 删除 数组 第一个元素; 3.push() 数组 最后 添加 一个 元素; 4.unshift() 数组 开头 添加 一个 元素; 5.sort() 数组 排序 6.splice...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 74,359
精华内容 29,743
关键字:

js数组