JS基础-数组的常用方法-冒泡排序
1.数组
1.关联数组
以数字作为元素下标的数组,就是索引数组。
以字符串作为元素下标的数组,就是关联数组。
2.js的关联数组
ex:在php中
$array=["name"=>"Tom"]
var unames=[];
unames["西游记"]="孙悟空";
unames["红楼梦"]="林黛玉";
unames["三国"]=["刘备","关羽","张飞"];
注意:
1.关联数组中,字符串下标的内容是不记录到length中的。
2.只能通过 字符串 做下标取值。
3.for...in
遍历出任意数组中的字符串下标以及索引下标。
语法:
for(var 变量 in 数组){
//变量:字符串下标或索引下标
}
练习:
定义一个数组,数组中包含索引和字符串下标的元素。用for...in遍历出数组中的元素并打印在控制台。
2.冒泡排序
1.什么是冒泡排序
排序算法之一,将一组数据进行排序,小的数字往前排,大的数字往后排。
两两比较,小的靠前,大的往后。
ex:
var arr=[23,9,78,6,45];
特点:
1.比较轮数:
5个数字 比较了4轮
6个数字 比较5轮
...
n个数字 比较n-1轮
for(var i=1;i<arr.length;i++){
}
2.比较的次数
随着比较的轮数的增加,比较的次数减少
for(var j=0;j<arr.length-i;j++){
//数字换位:异或
if(arr[j]>arr[j+1]){
arr[j]^=arr[j+1];
arr[j+1]^=arr[j];
arr[j]^=arr[j+1];
}
}
练习:
完成以下数组的冒泡排序
var array=[56,84,23,15,90,67];
3.数组的常用方法
1.toString();
作用:将一个数组转换为字符串,并返回转换后的结果
语法:var str=数组名.toString();
2.join()
作用:将数组的元素通过指定的字符连接到一起,并返回连接后的字符串。
语法:var str=数组名.join("字符串");
练习:使用数组实现以下图像:
*
**
***
****
*****
3.concat()
作用:拼接两个或更多的数组,并返回拼接后的结果。
语法:var result=数组名.concat(数组1,数组2,...);
注意:
1.要拼接的数据可以是数组,也可以是普通的数据。
2.concat不会改变原有数组,而是返回拼接后的数组。
练习:
声明两个数组分别保存一些国家的名称
1.数组l:大国
2.数组s:小国
将小国全部移入到大国数组中,并且将小国数组清空。
4.slice()
作用:截取子数组,从指定的数组中,截取几个连续的元素组成一个新的数组。
语法:var arr=数组名.slice(start,[end]);
start:从哪个下标位置处开始截取,取值为正,从前向后算,取值为负,从后向前。
ex: 0 1 2 3
var l=["中国","美国","英国","俄罗斯"];
-4 -3 -2 -1
end:指定结束位置处的下标(不包含),该参数可以省略,如果省略的话,就是从start开始一直截取到数组的尾部。
5.splice()
作用:允许从指定的数组中,删除一部分元素,同时再添加另一部分元素。
语法:arr.splice(start,count,e1,e2,...);
start:指定要添加或删除元素的起始下标位置。
count:指定要删除元素的个数,取值为0表示不删除。
e1,e2:要增加的新元素,可以多个。
返回值:返回的是一个由删除元素所组成的数组。
注意:该函数会改变现有数组。
练习:
声明一个数组,数组元素随意,将数组中第三个元素删除,然后在数组的最后位置添加一个新元素。
6.reverse()
作用:将数组反转
语法:数组名.reverse();
练习:
声明一个数组,内容随意。
调用reverse函数后,将数组打印在控制台查看结果。
7.sort()
1.作用:排序,默认情况下,按照数组元素的 unicode码进行升序排序。
2.语法:数组名.sort();
3.特殊用法
允许自定义排序函数,实现对数字的升序或降序的排序。
语法:数组名.sort(排序函数)
var arr=[12,3,85,7,46];
1.自定义函数(升序)
function sortAsc(a,b){
return a-b;
}
2.自定义函数(降序)
function sortDsc(a,b){
return b-a;
}
3.原理:
1·sortAsc定义两个参数a和b,表示数组中的相邻的两个数字。
2.将sortAsc函数指定给sort函数,数组会自动传递数据到sortAsc函数中,如果sortAsc返回值>0的话,则交换两个数字的位置,否则不变。
4.匿名函数
匿名函数:是一个没有名称的函数,只用一次。
升序:
arr.sort(function(a,b){return a-b;})
降序:
arr.sort(function(a,b){return b-a};)
练习:
1.声明一个整数数组,随意定义数字。
2.页面上添加两个按钮,一个“升序”按钮,一个“降序”按钮。
3.点击升序按钮时,数组按升序排序,并打印在控制台。
4.点击降序按钮时,数组按降序排序,并打印在控制台。
8.进出栈操作
js是按照标准的“栈式操作”访问数组的。
所有的“栈式操作”的特点都是“后进先出”。
1.push()
入栈,在栈顶(数组的尾部)添加指定的元素,并返回新数组的长度。
var arr=[10,20,30];
//向栈顶增加新数据40
var res=arr.push(40); //res的结果:4
2.pop()
出栈,删除(删除栈顶数据)并返回删除元素。
var arr=[10,20,30]
var r1=arr.pop(); //r1结果:30
3.shift()
作用:删除数组头部的(第一个)元素并返回删除元素。
var arr=[10,20,30];
var res=arr.shift();//结果:10
4.unshift()
作用:在数组的头部元素位置处,增加新元素。
var arr=[10,20,30];
var res=arr.unshift(40);//结果:4
练习:
定义一个数组,内容随意,在数组的尾部添加一个新的元素“A”,然后删除数组头部的第一个元素。
4.二维数组
1.什么是二维数组
在一个数组中的元素又是一个数组,也称为数组的数组。
2.二维数组的使用
var names=[
["孙悟空","蜘蛛精","唐三藏"],
["贾宝玉","薛宝钗","王熙凤"],
["宋江","武大郎","武松"]
];
names[0][1]
练习:
根据省份信息,查询城市列表
1.创建一个一维数组,保存几个省份名称;
2.创建一个二维数组,保存上面省份所对应的城市信息;
3.创建一个函数,接收一个身份的名称做参数,打印该省份所对应的城市信息。
JS基础-数组的常用方法-冒泡排序的更多相关文章
- JS基础——数组总结
JS中数组被觉得是一种对象,慢慢的,怎么忽然感觉,JS中仅仅要能够独立出来的概念怎么都能够当成对象来解释呢?有点儿怀疑.继续学吧.先来总结一下JS中数组是怎样详细使用的. 一.创建 数组的创建在JS中 ...
- js基础-数组及数据类型
数组也是引用类型 构造函数创建数组 Object 构造函数类型(所有类型基类) Array 构造函数类型 求幂运算符 ** 2**32-1 数组容量最大 arry.length 如果减小len ...
- js基础---数组方法
数组数据的排序及去重 sort无形参的排序方式 arr1=[2,12,3,15]; var a=arr1.sort();console.log(arr1);console.log(a);//排序会改变 ...
- JS中数组的常用方法
首先,在开始前我们先了解一下什么是数组. 1.什么是数组? 数组就是一组数据的集合,其表现形式就是内存中的一段连续的内存地址,数组名称其实就是连续内存地址的首地址.说白了它就是将一堆数据按照一定的顺序 ...
- Jsの练习-数组其他常用方法 -map() ,filter() ,every() ,some()
map() :映射,对数组中的每一项运行给定函数,返回每次函数调用结果组成的函数. <!DOCTYPE html> <html lang="en"> < ...
- JS基础——数组API之数组操作(filter、map、some、every、sort)
var arr = [1,2,3,4]; forEach arr.forEach((item,index,arr) => { console.log(item) //结果为1,2,3,4 } ...
- js基础——数组的概念及其方法
数组: 概念:是一种特殊的对象. 与普通对象的区别:a.普通对象使用字符串作为属性名,而数组使用数字作为索引来操作元素: b.数组的存储性能比普通对象好 数组的标志:[ ] 数组的索引:是从0开始的整 ...
- js基础----数组
1.数组如何定义 //第一种定义方法 var arr=[1,2,3,4]; //第二种定义方法 var arr=new Array(1,2,3,4); 两者没有任何区别,[]的性能可能略高,因为代码短 ...
- JS求数组最大值常用方法
第一种方法: 循环数组 let ary = [1,2,22,3,99,100],maxNum = ary[0] function getMaxNum(ary){ for(let i = 1,len = ...
随机推荐
- OpenStack的八年之痒
2010年10月,OpenStack发布了第一个版本:上个月,发布了它的第18个版本Rocky.几年前气氛火爆,如今却冷冷清清.Rocky版本宣布后,OpenStack群里也就出现了几篇简短的翻译过来 ...
- [UE4]Named Slot
用户创建的UI成为其他UI的子控件的时候,默认情况下是不能拥有子控件的,给UI添加一个Named Slot,这个UI就可以拥有子控件 一.创建一个名为testNameSlot的UI,添加3个Named ...
- ORA-03137: TTC 协议内部错误: [12333] [4] [49] [51] [] [] [] []
[1]问题背景:Oracle数据库版本为11.2.0.1,操作系统CentOS release 5.9,详细的报错信息如下: Dump file /data/oracle/diag/rdbms/db0 ...
- how find out what is causing Visual Studio to think each project is out of date
You can find out what is causing Visual Studio to think each project is out of date, and then addres ...
- cookie与session的区别是什么
cookie与session的区别有:cookie以文本格式存储在浏览器上,存储量有限:而会话存储在服务端,可以无限量存储多个变量并且比cookie更安全 在php中可以指定站点的访问者信息存储在se ...
- py库:文本转为语音(pywin32、pyttsx)
http://blog.csdn.net/marksinoberg/article/details/52137547 Python 文本转语音 文本转为语音(使用Speech API) 需要安装 py ...
- python3 pyinstaller生成exe文件过程问题解决记录
1.使用pip安装pyinstaller 2.在cmd打开需生成可执行文件的python文件所在文件夹 3.使用命令pyinstaller -F -w **.py (代码中有import其他模块的,只 ...
- leetcode98
class Solution { public: vector<int> V; void postTree(TreeNode* node) { if (node != NULL) { if ...
- Oracle,cast函数
cast(要转换的值 AS 转换的类型): 问题:' ' as FSubBillNo 若用此法 oracle 默认字段类型为char型 且字段长度度为输入空格的长度,会导致字符串 ...
- Fragment的粗浅理解
Fragment: 1.它是对于Activity界面实现的一种途径,相对于已经绑定的Layout,他更轻便,更灵活,更具有自由度和可设计性. 2.Fragment的功能正如他的正文意思所言,他是一个片 ...