javaScript之数组(一)

1.***数组:多个变量的集合,起了一个统一的名字  --用法

连续保存多个数据的引用类型的对象    --存储

为什么要使用数组:

程序=算法+数据结构

好的数据结构。可以极大提高程序的执行效率

何时使用:程序中都是用数组集中管理多个数据

如何使用:创建   赋值   取值

1.创建:4种

1.创建空数组:var 数组名=[];  -->js中见到[],就是数组

2.创建数组同时,初始化数组中的每个元素:

var 数组名=[值1,值2,值3........];

内存中的数组名:引用类型的对象;每个值相当于一个元素;每个元素都有一个下标;

下标从0开始,每次增1,倒数个数-1

数组对象的个数:arr.length      arr.length永远等于最后一个下标+1

3.创建空数组:var 数组名=new Array(); -->([n]);

new:创建一个新对象

Array:数组类型

n:表示初始元素的个数,省略则创建空数组

4.创建数组同时初始化数组元素:

var 数组名=new Array(值1,值2 .....);

如何使用数组中每个元素:数组名[i]

数组名[i]的用法和普通的变量完全相同

2.赋值:

1.数组名[i]=值

2.不限制:  --和其他语言最大的不同

1.不限制元素的个数:没有数组越界错误,length自动增长为最大下标+1

2.不限制元素的类型

3.取值:任何位置使用数组名[i],等效于直接使用数组名[i]中的值

数组是引用类型的对象:

原始类型的值,复制后,相互不影响

将数组中保存的数组对象的地址值,复制给另一个   ---引用类型

引用类型的对象,赋值后,依旧引用同一个对象,任何修改,都会影响对方

给一个数组赋值为null,即为释放

null:主动释放一个对象

垃圾回收器:专门释放内存中不再被引用的对象的小程序,伴随主程序执行;

每个对象都有一个引用计数器,增加引用+1,减少引用-1

一个对象,引用计数器为0,不再被任何变量引用时,才能被回收

建议:使用完较大的对象后,都要主动释放

数组的length属性固定套路:2个

1.获得最后一个元素值:arr[arr.lenght-1]

2.向数组末尾追加一个新元素:arr[arr.lenght]=新值

遍历数组:依次对数组中每个元素执行相同操作

//三要素:

1.下标:i<数组长度

2.变量:下标i从0开始,每次++

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

当前元素:arr[i]

}

如何遍历hash数组:

for(var key in hashArr){//反复取出每个key放入

}

for in 结构也可以遍历索引数组,但是无法控制开始和结束,默认从头开始到尾部结束

今后:只要遍历索引数组,选普通for循环;只要遍历关联数组,hash数组,只能用for in循环

笔试题:例1:

var chyx=[];chyx["name"]="小笼包";chyx["sx"]=81;chyx["yw"]=61;chyx["yy"]=89;var keys=[];var i=0;for(keys[i++] in chyx);//获取一个关联数组所有的下标console.log(keys);//name sx yw yy

例2:定义一个函数,找出一个整数中的最大值

/*定义一个函数,找出一个整数中的最大值*/

    /*定义一个函数 getMax,接收一个数组对象参数arr    * 将arr中第一个元素放入变量max    * i从1开始遍历arr中的元素的值    * 如果当前元素>max    * 将当前元素存入max中    * 遍历返回max*/

  function getMax(arr){      var max=arr[0];      for(var i=1;i<arr.length;i++){          if(arr[i]>max){              max=arr[i];          }      }      return max  }  /*var arr=[4,6,2,5,9,7];*/  console.log(getMax([4,6,2,5,9,7]))

例3:定义函数,去掉数组中重复元素

/*定义函数,去掉数组中重复元素*//*定义函数delRepeat,接收一个数组arr*/    function delRepeat(arr){        //定义空数组hash        //i从第一个元素开始遍历arr中每个元素        //  将当前元素作为key,加入hash中,值设置为1        //(遍历结束后)将arr重置为空数组        //使用for in循环将hahs中每个key放入arr中        //返回arr        var hash=[];        for(var i=0;i<arr.length;i++){            hash[arr[i]]=1;        }        arr=[];        i=0;        for (arr[i++] in hash);        return arr;    }console.log(delRepeat(["a","a","d","v","v","r","f","a"]))

2.数组的API:浏览器厂商已经实现的方法;开发人员直接调用,不需要了解具体实现

将数组装换为字符串:2个

var str=arr.toString():返回数组中元素的内容,用逗号分隔

var str=arr.join("连接符"):***可自定义链接符***

固定套路:

1.无缝拼接数组每个元素:var str=arr.join("") --如果不加“ ”,等效于加;

2.将单词拼接为句子:var str=arr.join(" ");

3.将数组拼接为html元素:案例:

var provs=["北京市","天津市","河北省"];var html="<select><option>"+provs.join("</option>><option>")+"</option></select>";

优化:数组的拼接比字符串拼接效率更高!

建议:今后凡是频繁的字符串拼接,都要2步:

1.先将要拼接的子字符串放入一个数组中

2.调用数组的join方法,一次性生成结果字符串

获取数组字符串:toString()方法可以把数组转换为字符串,并返回结果

join([separator])返回一个字符串,由每个元素转换而成的字符串使用指定的separator拼接而成

获取子数组:var subArr=arr.slice(stari,endi+1);

starti:开始获取的下标位置

endi:表示获取到的小标位置

***含头不含尾

slice方法支持倒数参数:其实负数下标不存在;假定的负数下标从-1开始

splice:删除   插入  替换

1.删除:arr.splice(starti,n)  --从starti位置开始,删除n个元素

2.插入:arr.splice(starti,0,新值1,新值2,....)  --在starti位置插入新值1,新值2 ,原stari位置及其之后的元素,被 顺移

3.替换:arr.splice(starti,n,新值1,新值2.....)

新元素的个数和n不一定相等

数组会自动调整元素的位置和长度

颠倒数组中所有元素的位置:arr.reverse();

强调:

var x=arr[i];//将arr[i],复制一份,改x,与arr[i],无关

3.数组的sort方法:arr.sort()

特点:默认按升序排列;默认一切都转为字符串,再按字符串比大小

自定义排序规则:2步:

1.定义比较器函数:专门比较任意两值大小的函数

规定:两个参数(a,b);

必须返回数字:如果a>b,就要返回正数

如果a<b,就要返回负数

如果a=b,就要返回0

//定义比较器函数function compare(a,b){    /* return a-b;*/ return parseFloat(a)-parseFloat(b);}

2.将比较器函数对象作为参数传入sort方法中:

arr.sort(比较器函数对象函数名)

//定义比较器函数    function compare(a,b){       /* return a-b;*/        return parseFloat(a)-parseFloat(b);    }        arr.sort(compare);            console.log(arr);

//函数作为对象传给别人用,不加()

冒泡排序:bubble --手写级别

function bubble(arr,compare){    for(var r=1;r<=arr.length-1;r++){        for(var i=0;i<arr.length-r;i++){            if(compare(arr[i],arr[i+1])>0){                var temp=arr[i];                arr[i]=arr[i+1];                arr[i+1]=temp;            }        }    }}    function compare(a,b){        return parseFloat(a)-parseFloat(b);    }    var arr=[‘35px‘,‘12px‘,‘5px‘,‘123px‘];    bubble(arr,compare);    console.log(arr);

函数 VS 方法:

1.都是function对象

2.不属于任何对象的叫函数(不需要通过.访问)

3.属于特定对象的函数叫方法(需要通过对象,才可以访问)

时间: 2024-10-06 20:35:57

javaScript之数组(一)的相关文章

JavaScript操作数组

数组被描述为一个存储元素的线性集合,元素可以通过索引来任意存取. 几乎所有的编程语言都有类似的数据结构,但是Javascript中的数组却略有不同. Javascript中的数组是一种特殊的对象,所以在数组的操作效率上不如其他语言中的数组高. 也因为数组再JavaScript中被当做对象,所以它有很多属性和方法可以再编程时使用. 下面就简单介绍一下JavaScript中的数组的使用方法. 注:以下所有的JavaScript代码均在 jsshell 中运行,一些方法可能在其他环境中(如浏览器和su

javascript中数组的22种方法 (转载)

前面的话 数组总共有22种方法,本文将其分为对象继承方法.数组转换方法.栈和队列方法.数组排序方法.数组拼接方法.创建子数组方法.数组删改方法.数组位置方法.数组归并方法和数组迭代方法共10类来进行详细介绍 对象继承方法 数组是一种特殊的对象,继承了对象Object的toString().toLocaleString()和valueOf()方法 [toString()] toString()方法返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串 [注意]该方法的返回值与不使用任何参数

javascript常用数组算法总结

1.数组去重 方法1: JavaScript //利用数组的indexOf方法 function unique (arr) { var result = []; for (var i = 0; i < arr.length; i++) { if (result.indexOf(arr[i]) == -1) result.push(arr[i]); } return result; } 1 2 3 4 5 6 7 8 9 //利用数组的indexOf方法 function unique (arr)

JavaScript定义数组

JavaScript定义数组有两种方式: 1.通过Arrary()构造函数定义数组. 2.通过直接赋值法定义数组. Arrary()构造函数定义数组 格式一: var name = new Array(num); name[0] = 元素1; …… name[num-1] = 元素num; 格式二: var name = new Array(); name[0] = 元素1; name[0] = 元素2; name[0] = 元素3; …… 格式三: var name = new Array(元

私人定制javascript中数组小知识点(Only For Me)

先上笑话,1.刚看到一个游泳的,想起公司组织去三亚旅游,老板跳海里,各种挣扎,捞上来老板第一句话:我记得我会游泳的啊. 2.媳妇说:老公对不起,我把你新买的自行车撞散架了! 老公:没事宝贝,你若安好,便是晴天! 媳妇说:老公你太有诗意了. 老公:滚犊子,安不好我整死你! 数组的概念 javascript数组是值得有序集合,不过它实属一个javascript对象的特殊形式,这是一个很重点的定性. 创建数组 1.var a=new Array();//等同于[] 2.var a=new Array(

PHP的数组值传入JavaScript的数组里

<!doctype html public "-//W3C//DTD HTML 4.0 //EN"> <html><head>       <title>PHP的数组值传入JavaScript的数组里</title>       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><s

JavaScript判断数组是否包含指定元素的方法

本文实例讲述了JavaScript判断数组是否包含指定元素的方法.分享给大家供大家参考.具体如下: 这段代码通过prototype定义了数组方法,这样就可以在任意数组调用contains方法 /** * Array.prototype.[method name] allows you to define/overwrite an objects method * needle is the item you are searching for * this is a special variab

JavaScript的数组

一.Array 数组概述: 1.Array 类型是 ECMAScript 最常用的类型. 2.javaScript 中的 Array 类型和其他语言中的数组有着很大的区别. 3.虽然数组都是有序排列,但 javaScript中的数组每个元素可以保存任何类型. 4.javaScript 中数组的大小也是可以调整的. 二.创建数组的两种方式: 1.new 运算符创建数组 var box = new Array(); //创建了一个数组,数组属于object类型 var box = new Array

javascript中数组的22种方法

× 目录 [1]对象继承 [2]数组转换 [3]栈和队列[4]数组排序[5]数组拼接[6]创建数组[7]数组删改[8]数组位置[9]数组归并[10]数组迭代[11]总结 前面的话 数组总共有22种方法,本文将其分为对象继承方法.数组转换方法.栈和队列方法.数组排序方法.数组拼接方法.创建子数组方法.数组删改方法.数组位置方法.数组归并方法和数组迭代方法共10类来进行详细介绍 对象继承方法 数组是一种特殊的对象,继承了对象Object的toString().toLocaleString()和val

[转] 有趣的JavaScript原生数组函数

在JavaScript中,可以通过两种方式创建数组,Array构造函数和 [] 便捷方式, 其中后者为首选方法.数组对象继承自Object.prototype,对数组执行typeof操作符返回‘object’而不是‘array’.然而执 行[] instanceof Array返回true.此外,还有类数组对象使问题更复杂,如字符串对象,arguments对象.arguments对象不是Array的实例,但却 有个length属性,并且值能通过索引获取,所以能像数组一样通过循环操作. 在本文中,