js数组

1:创建数组:

Array对象:var数组名称=new Array();//创建一个空的数组

var 数组名称=new Array(size);//创建size个undefind成员的数组

var 数组名称=new Array(element0,element1,‘’‘’‘’‘elementn);//创建n个已知的数组

简写:var数组名称=[element0,element1,‘’‘’‘’‘,elementn];

2:读取数组

语法:数组名称[索引]//索引都是从0开始的

循环读取:方法一:for循环


例:var a=[15,20,"天"];
    for(var i=0;i<a.length;i++){
        document.write(a[i]);
    }//var最好换为let,避免变量i泄露到全局变量
    

方法二:for in循环


例:var  a=new Array(15,20,"天");

    for(var k in a){

        document.write(a[k]);

    }
    alert(k);  //var最好换为let,避免变量k泄露到全局变量

3:数组的常用属性
1:length设置或返回数组中元素的数目

注 数组length属性他不是只读的。我们还可以利用这个属性可以从数组末尾移除或添加项


例:var colors=["red","blue","green"];

       colors.length=4;

      alert(colors[3]);//输出为underfind  相当与添加了一个空的项

      colors[colors.length]="back";//在最后添加了一项 为back

      alert(colors);//输出为"red","blue","green","back"

2:constructor 引用数组对象的构造函数

3:prototype

4:检测数组

5:数组常用的方法

1:添加

A:push() 可以接收任意数量的参数,把他们逐个添加到数据末尾并返回修改后的 数组长度

 var arr=["xiaohu","uzi","ming"];
 var count=arr.push("letme","zztai");
 console.log(count);//5
 console.log(arr);//["xiaohu","uzi","ming","letme","zztai"]

B:unshift() 将参数添加到原数组开头,并返回数组的长度


var arr=["xiaohu","uzi","ming"];

var count=arr.unshift("letme","zztai");

console.log(count);//5

console.log(arr);//["letme","zztai","xiaohu","uzi","ming"]

C:concat() 将参数或数组添加到原数组中。这个方法会先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。在没有给 concat()方法传递参数的情况下,它只是复制当前数组并返回副本。


var arr=["xiaohu","uzi","ming"];

var arrcopy=arr.concat("letme",["zztai","mlxg"]);

console.log(arrcopy);//["xiaohu","uzi","ming","letme","zztai","mlxg"]

console.log(arr);//["xiaohu","uzi","ming"]

传入的不是数组,则直接把参数添加到数组后面,如果传入的是数组,则将数组中的各个项添加到数组中

2:删除

A:shift():删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined 。

var arr=["xiaohu","uzi","ming","letme","zztai","mlxg"] ;

var item=arr.shift();

console.log(item);//xiaohu

console.log(arr);//["uzi","ming","letme","zztai","mlxg"]

B:pop() 去除数组末尾最后一项,减少数组length的值,然后返回移除的项

 var arr=["xiaohu","letme","uzi","ming","mlxg"];

var item=arr.pop()

console.log(item);//mlxg

console.log(arr)//["xiaohu","letme","uzi","ming"]

3:子数组(添加替换原数组中一段数组)

A:splice()

B:slice()

4:数组排序

A:sort() 按从小到大的顺序排列数组(在排序时,sort会调用toString方法,然后比较字符串)

 var arr=[15,25,32,99];

var compare=arr.sort();//调用toString方法

console.log(compare);//[15,25,32,99]返回的是字符串,不再是数字

故要对数字进行排序,sort()方法可以接收一个比较函数作为参数,以便我们指定哪个值位于哪 个值的前面

function compare(){

if(value1>value2){//return的值为1则大的在后面

 return 1;

}else if(value1<value){//return的值为-1则小的在后面

return -1;

}else{//相等

return 0;

}

对sort()排序的的深入研究(对对象进行排序实例)
A:假如我们有一组学生对象,我们需要按要求对他进行排序

var students=[
    {name:xiaohu,age:20;score=86},
    {name:letme,age:21;score=88},
    {name:uzi,age:23;score=90}
    ]

A考点:Array.sort(fun)
fun是一个函数,排序根据这个函数返回值来进行判断,如果返回值-1(小于0)表示两个元素不需要交换位置,1(大于0)表示要用交互位置,0表示相等,实际上<=0等效.
B注意点
a:对原数组进行操作,会改变原数组的值
b:调用toString方法,所以默认按照字符编码排序
C:想要完成值比较排序,必须传入sort参数(函数)进行规制制定:

function sortRule(a,b) {
        return a-b; // 如果a>=b,返回自然数,不用交换位置
    }   
    arr1.sort(sortRule);

假如我们要排序的不是一个数组而是一个对象时

var students=[
    {name:"xiaohu",age:20,sco:86},
    {name:"letme",age:21,sco:88},
    {name:"uzi",age:23,sco:90},
    {name:"mlxg",age:21,sco:99}
    ]
    function sortBy(field) {
    return function(a,b) {
        return a[field] - b[field];
    }
}
     console.log(students.sort(sortBy("age")));//按age

B:reverse() 反转数组顺序

var arr=[15,5,13,1]

console.log(arr.reverse()); //[1,13,5,15]

 console.log(arr); //[1,13,5,15]这里不是num是string

5:数组的转换

A:toString() 转换为字符串返回

B:toLocaleString() 转换为本地格式的字符串并返回

C:join("separator")

A:将数组的元素组成一个字符串,以“separator”作为分隔符连接

例:var arr=new Array(15,20,"天");

console.log(arr.join());//15,20,天

console.log(arr.join("-"));//15-20-天以指定分隔符连接

console.log(arr);//[15,20,天]原数组不变

B:还可以实现重复字符串,只需传入字符串和重复次数即可

例:function repeatSring(str,n){

return newArray(n+1).join(str)

}

console.log(repeatString("he",3));//hehehe

6:位置方法
A:indexof() 和lastIndexOf() 从数组起始位置开始查找或最后位置

(1)定义和用法: indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。

(2) 语法: stringObject.indexOf(searchvalue,fromindex)

该方法将从头到尾地检索字符串 stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的 fromindex 处或字符串的开头(没有指定 fromindex 时)。如果找到一个 searchvalue,则返回 searchvalue 的第一次出现的位置。stringObject 中的字符位置是从 0 开始的。

(3)参数描述:

a:searchvalue 必写 要检索的字符串的值

b:fromindex 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。

(4)提示和注释 注释: a: indexOf() 方法对大小写敏感!

b:注释:如果要检索的字符串值没有出现,则该方法返回 -1。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354