viki-119 / JS-viki

1 stars 0 forks source link

js数组knowledge #1

Open viki-119 opened 9 years ago

viki-119 commented 9 years ago

var arr=new Array()和 var arr=[] 的区别: 1、new Array();会实例化一个对象变量,而var arr=[];等于是直接声明一个变量。很明显实例一个对象对性能的损耗比直接声明一个对象来的大些; 2、[]和new Array()的另一个区别是new Array()可以直接设置数组的长度,而[]不行。如:new Array(100);

总之:在Javascript里分配大量的new变量地址是一项很慢的操作,为了效率起见,应该始终使用对象符号。

三种定义数组的方式 1.var cars = new Array(); cars[0] = "Audi"; cars[1] = "BMW"; cars[2] = "Volvo";

2.var cars=new Array("Audi","BMW","Volvo");

3.var cars=["Audi","BMW","Volvo"];

viki-119 commented 8 years ago

删除数组中重复条目 var arr = [1,2,2,"a","ba","a",3,4,4,5]; function del(){ var a = [],o=[], i, v,len=arr.length; for(i=0;i<len;i++){ v=arr[i]; if(o[v]!=true){ a.push(v); o[v]=true; } } console.log(a); return a; } del();

viki-119 commented 8 years ago

操作数组常用的方法(13个) toString(),valueOf(),toLocaleString(),join(),split(),slice(),concat(),pop(),push(),shift(),unshift(),sort(),splice() 1.-------toString(),valueOf(),toLocaleString(): 功能:返回数组的全部元素(注:数组名也可以返回整个数组) 代码: var m=["am","bm","cm"];//用中括号声明一个数组对象 alert(m.toString());//toString()返回数组对象的所有内容,用逗号分割,即am,bm,cm alert(m.valueOf());//valueOf()也返回数组对象的所有内容 var d, s; // 声明变量。 d = new Date(); // 创建 Date 对象。 s = "Current setting is "; s += d.toLocaleString(); // 转换为当前区域。 return(s); // 返回转换的日期。 alert(s.toLocaleString());//toLocaleString()也返回数组对象的所有内容,但有地区语言区别,暂不研究 alert(m);//数组名也返回数组对象的所有内容

2.------join(): 功能:把数组各个项用某个字符(串)连接起来,但并不修改原来的数组 代码: var m=["am","bm","cm"];//用括号声明一个数组对象 var n=m.join("---");//用---连接am,bm,cm. alert(m.toString());//m并没有被修改,返回am,bm,cm alert(n);//n是一个字符串,为am---bm---cm

3.------split(): 功能:把一个字符串按某个字符(串)分割成一个数组,但不修改原字符串 代码: var str="I love maomao,I am caolvchong"; var arr=str.split("o");//按字符o把str字符串分割成一个数组 alert(arr);//输出整个数组

4.------slice():返回某个位置开始(到某个位置结束)的数组部分,不修改原数组 代码: var m=["am","bm","cm","dm","em","fm"]; var n=m.slice(2);//返回第二个元素bm后面的元素,即cm,dm,em,fm var q=m.slice(2,5);//返回第二个元素后到第五个元素,即cm,dm,em alert(n); alert(q);

5.------数组对象的栈操作: push():数组末尾添加一个项 pop():删除数组最后一个项 代码: var m=["am","bm","cm","dm","em","fm"]; m.push("gm");//在数组末尾添加元素gm • alert(m); • m.pop();//删除数组最后一个元素gm • alert(m);

6.------数组对象的队列操作: unshift():数组头添加一个项 shift():删除数组第一个项 代码: var m=["am","bm","cm","dm","em","fm"]; m.unshift("gm");//在数组第一个元素位置添加元素gm alert(m); m.shift();//删除数组第一个元素gm alert(m);

7.------sort():数组按字符的ASCII码进行排序,修改数组对象 注:即便是数字数组,也将转化为字符串来进行比较排序 代码: var m=["am","fm","gm","bm","em","dm"]; m.sort();//按字母序排序 alert(m);

8.------concat():在数组尾添加元素,但不修 改数组对象 代码: var m=["am","bm"] var n=m.concat("cm");//添加一项cm,并且赋予新数组对象 alert(m);//原数组没有被修改 alert(n);//输出新数组对象

9.------splice():在数组的任意位置进行添加,删除或者替换元素,直接修改数组对象 细节: splice()有三个参数或三个以上参数,前两个是必须的,后面参数是可选的 进行添加:splice(起始项,0,添加项) 进行删除:splice(起始项,要删除的项个数) 进行替换:splice(起始项,替换个数,替换项) 这个其实是添加删除的共同结果 代码: var m=["am","bm"] m.splice(1,0,"fm","sm");//在第一项后面添加fm和sm,返回am,fm,sm,bm alert(m); m.splice(2,1);//删除第二项后面一项(即第三项sm,返回am,fm,bm) alert(m); m.splice(2,1,"mm");//替换第二项后面一项(即第三项,返回am,fm,mm) alert(m); 从一个数组中移除一个或多个元素,如果必要,在所移除元素的位置上插入新元素,返回所移除的元素。 arrayObj.splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]]) 参数 arrayObj 必选项。一个 Array 对象。 start 必选项。指定从数组中移除元素的开始位置,这个位置是从 0 开始计算的。 deleteCount 必选项。要移除的元素的个数。 item1, item2,. . .,itemN 必选项。要在所移除元素的位置上插入的新元素。 说明 splice 方法可以移除从 start 位置开始的指定个数的元素并插入新元素,从而修改 arrayObj。返回值是一个由所移除的元素组成的新 Array 对象。 示例: function test() { var a=[1,2,3]; a.splice(1,1,4,6,7,8) //移除第二个,然后在第一个后插入4,6,7,8,返回:1,4,6,7,8,3 alert(a); a.splice(0,1,3) //移除第一个,然后在第一个前插入3,返回:3,4,6,7,8,3 alert(a); a.splice(2,0,5) //在第三个元素插入一个5,返回:3,4,5,6,7,8 alert(a); a.splice(-1,1) //移动最后一位,类似shift方法,返回:3,4,5,6,7,8 alert(a); }