两种排序方式以及数组的方法

86 阅读3分钟

冒泡排序:对比数组前一项和后一项,如果前一项大,就往后面挪。

实现代码:if (arr[i] > arr[i + 1]) {
var temp = arr[i]
arr[i] = arr[i + 1]
arr[i + 1] = temp
}

选择排序:主要看值的索引,假设索引为0的值最小,把它与a[i]作比较,如果a[i]较小,就先赋值为a[i]再进行交换。

实现代码: var minIndex = k   
for (var i = k + 1; i < arr.length; i++) {
if (arr[minIndex] > arr[i]) {
minIndex = i
}
}
var temp = arr[k]
arr[k] = arr[minIndex]
arr[minIndex] = temp

数组的方法:

1 push  ##

语法:数组.push(数据)        作用:向数组末尾添加数据
返回值:数组新长度

2 pop

语法:数组.pop()                作用:删除数组最后一项
返回值:数组被删除的值

3 unshift

语法:数组.unshift(数据)        作用:向数据头部添加数据
返回值:数组新长度

4 shift

语法:数组.shift()            作用:删除数组第一项
返回值:数组被删除的值

5 reverse

语法:数组.reverse()         作用:反转数组
返回值:反转后的数组

6 sort

语法:(1)数组.sort  

(2)数组.sort(function (a, b) {retrun a - b})

(3)数组.sort(function (a, b) {retrun b - a})

作用:(1)不传参数:会将数组里面的数字转化为字符串一位一位的进行对比

(2)传参 函数return a - b: 将数组里面的数字从小到大排列

(3)传参 函数return b - a: 将数组里面的数字从大到小排列

返回值:都是将排序后的数组返回

7 splice

语法: (1)数组.splice(开始索引, 多少个)

(2)数组.splice(开始索引, 多少个, 数据1, 数据2, 数据3...)

作用:(1)不传数据: 剪切数组中的某一段数据

(2)传递数据: 剪切数组中的某一段数据, 从第三个参数开始, 当成新数据插入到数组内

返回值:被剪切的数据(数组形式)

8 slice (不会改变原数组)

 语法: 数组.slice(开始索引, 结束索引)

 参数特点: (1) 包含开始索引, 不包含结束索引(到结束索引前一位)

(2)参数接受负数(相当于数组.length + 负)

(3)不写结束索引(相当于写了.length)

(4)一个参数都不传,会复制整个数组

作用:复制数组中的某一段数据

返回值:复制出来的内容

9 concat(不会改变原数组)

语法: 数组.concat(数据1, 数据2)

作用: 将参数合并到指定数组内(如果参数写了数组, 那么会将数组的每一个值合并到指定数组)

返回值: 合并后的数组

10 join (不会改变原数组)

语法: 数组.join(连接符)

参数可以不传, 不传递默认按照 , 逗号

作用: 通过连接符连接数组的每一个值

返回值: 连接好的数组

11 indexOf(不会改变原数组)

语法:(1) 数组.indexOf(数据) 

(2)数组.indexOf(数据, 开始索引)

作用: 在数组内寻找指定数据

返回值: 
(1) 找到数据的时候, 返回数据第一次出现的下标

(2)找不到的时候, 返回 -1

12 lastIndexOf(不会改变原数组)

语法:(1)数组.lastIndexOf(数据)

(2)数组.lastIndexOf(数据, 开始索引)

作用: 在数组内寻找指定数据(倒叙寻找)

返回值: 
(1) 找到数据的时候, 返回数据第一次出现的下标

(2) 找不到的时候, 返回 -1