好程序员web前端分享数组及排序、去重和随机点名,栈堆结构:堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。html
栈:存放的是路径;容量有限(在一开始被定义以后就不会改变了);先进后出(FILO)first In
Last Out前端
堆:路径映射的数据;容量无限(由于一直可能被改变);列队优先,先进先出(FIFO)first In Last Out程序员
若是咱们把数组理解为栈堆结构的话,那么 web
var arr = [1,2,3,4,5,6 ];算法
那么arr就是 栈 他是一个路径 : 找到数据的存储层;数组
数据 [1,2,3,4,5,6] 就是堆 ; 数据结构
若是咱们想要 改变堆中的数据的话,那么咱们能够用push()方法向尾部添加一个数据,或者用pop()方法删除尾部数据。
数组:
for-in(结合数组或对象);dom
数组的概念,一组(通常状况下相同类型)的数据;函数
下标(索引)的概念;spa
建立数组
var arr= new Array(10); //建立一个包含 10 个元素的数组;
var arr2= new Array('杨怀智',100,'教师','辽宁');//使用构造函数建立;
var arr3 = [1,2,3,4,5];
静态赋值
arr[0] = 5;
arr[1] = 12;
arr[2] = 4;
动态赋值
for(var i=0; i<5; i++){
arr[i] = Math.random();
}
数组对象自带的属性:length表明数组有多少数据项;
遍历访问数组 普通for循环和 forEach循环
arr.forEach(function(element,index,Arr){
})
push/pop、unshift/shift方法
arr.push('BJ'); //数组末尾添加一个元素
arr.unshift('TJ'); //数组开头添加一个元素
var str = arr.pop(); //移除末尾一个元素,并返回该元素
var str = arr.shift(); //移除开头一个元素,并返回该元素
队列结构:
练习:找出全部1-100之间7的倍数和包含7的数字
倒序reverse方法;
arr.reverse()方法不会建立新的数组,而是将原有数组顺序进行了改变;
var arr=[1,2,3]
arr.reverse();
console.log(arr)//3,2,1
从小到大排序sort方法 (数字的排序)
冒泡排序算法:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script> var arr = [2, 333, 1, 4, 6, 5, 7, 8]; for (var i = 0; i < arr.length - 1; i++) { for (var j = 0; j < arr.length - i; j++) { var ls; if (arr[j] > arr[j + 1]) { ls = arr[j]; arr[j] = arr[j + 1] arr[j + 1] = ls } } } console.log(arr) </script> </head> <body> </body> </html>
选择排序算法:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script> var arr = [3, 4, 1, 5, 2] for (var i = 0; i < arr.length; i++) { //趟数 var min = arr[i]; var index = i; for (var j = i; j < arr.length; j++) { if (min > arr[j]) { min = arr[j]; index = j; } } arr[index] = arr[i]; arr[i] = min; } document.write(arr); </script> </head> <body> </body> </html>
案例:去重
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <script> var arr = [11, 2, 33, 4, 2, 11, 3, 44, 33, 2] arr.sort(); var arr2 = [arr[0]] for (var i = 0; i < arr.length; i++) { if (arr[i] != arr2[arr2.length - 1]) { arr2.push(arr[i]); } } alert(arr2) </script> </head> <body> </body> </html>
随机点名程序:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <script> document.onclick = function() { var aName = ['杨怀智1', '杨怀智3', '杨怀智4'] var rad = Math.round(Math.random() * 2); document.write(aName[rad]) } </script> </head> <body> 随机点名 </body> </html>