颠倒 数组中的元素顺序 改变原数组的值
var a = [1,2,3,4,5,6,7,8,9,0];
console.log(a.reverse())
console.log(a)*/
eval();// eval()函数 可以接收一个字符串做参数
function foo(str,a){
eval(str)
//var b=3
console.log(a,b)
}
var b=2;
foo("var b=3",1)// ? */1,3
function foo(a,b){
console.log(a,b)
}
foo(8,9)//?*/
forEach() 方法 迭代器函数
var a = [1,2,3,4,5,6,7,8,9,0];
a.forEach(function(x){
console.log(x%2 ==0)
})
var x = [2,3,4,5,6,7,8,9,0];
var OU = function(x){
return (x%2 == 0)?true:false
}
var data = x.every(OU);// false;//
/*如果数组中检测到有一个元素不满足,
则整个表达式返回 false ,且剩余的元素不会再进行检测。
如果所有元素都满足条件,则返回 true*/
console.log(data)
二维数组
创建一个二维数组
var arr = [[1,2],[2,3], [3,4]]
//0 1 2 父数组中的下标
var arr = [
[1,2],//0
//0 1 子数组中的下标
[2,3],//1
[3,4] //2
]*/
/*
var arr = [];
arr[0] = [1,2];
arr[1] = [2,3];
console.log(arr[0])
*/
栈和队列
// 栈 先进入的元素后出 结尾入栈 先出栈 特
点:只能从一端插入/另一端封闭
// 元素下标是固定的
// 入栈 arr.push(值) //入栈 每次压入一个新值
// 出栈 arr.pop() 末尾弹出
/*
var bus = [];
for(var i=1;i<=5;i++){
bus.push("乘客"+i)
}
console.log(bus)//["乘客1", "乘客2", "乘客3",
"乘客4", "乘客5"]
while(bus.length > 0){
var cus = bus.pop();
console.log("末尾弹出" + cus)
}
console.log(bus)*/
JS 开头入栈出栈的方法 所有下标都会随着入栈出栈的操作发生变化
//unshift 入栈 (开头入栈)
/* var queue=[];
for(var i=1;i<=5;i++){
queue.unshift("第"+i+"个吃包子")
}
console.log(queue)
var bao = 5;
while(bao>0){
// var cas = queue.shift();// 开头出栈
var cas = queue.pop();//末尾出栈
console.log(cas+"吃完")//
bao--;
}*/
/* var bing = 5;
var queue = [];
for(var i=1;i<=5;i++){
queue.push("顾客"+i);
}
console.log(queue)
queue.push("大白牙");//[1,2,3,4,5,"大白牙"]
while(bing>0){
// 开头出栈
var cus = queue.shift();
console.log("恭喜"+cus+"抢购成功");
bing--;
}
console.log(queue+"没抢上")*/
// 去掉数组中重复的元素次数
/* var arr = [2,3,4,3,6,4,5,6];
var hash = [];
for(var i=0;i<arr.length;i++){
//hash ---- undefined
//如果hash 数组中 不包含 当前元素 arr[i] key +1
//arr[i]=3
if(hash[arr[i]] === undefined){
//key+1/
hash[arr[i]] =1;
}else{
hash[arr[i]]++;
}
}
console.log(hash)//[2: 1, 3: 2, 4: 2, 5: 1, 6: 2]
var str = [ ];
for(var key in hash){
//依次将hash 中的每一个 (value值) key值为1 追加到 hash中
str[str.length] = (key-=0)
}
console.log(str)
var arr = [2,3,4,6,4,5,6];
var arr2=[];
var arr3=[];
for(var i=0;i<arr.length;i++){
//i遍历当前元素
var x=1;//记次数
for(var j=i+1;j<arr.length;j++){
//j 遍历当前元素后面的所有元素
if(arr[i]==arr[j]){
arr.splice(j,1);
x++;
j--;
}
}
arr2[i]=arr[i]+":"+x;
arr3[i]=arr[i];
}
console.log(arr2)
console.log(arr3)*/
//数组 sort() 排序 默认升序 直接改变原数组的值
var arr= [6,4,1,0,9,2];
console.log(arr.sort());
console.log(arr)
var arr1= [161,24,41,0,9,2];
//console.log(arr1.sort())
// 自定义比较器函数 *默认写*
// 1) function compare(a,b){return a-b}
/*function compareASC(a,b){return a-b}// 升序
function compareDESC(a,b){return b-a}// 降序
var s = arr1.sort(compareDESC)
console.log(s)
arr1.sort(function(a,b){return a-b>0})
console.log(arr1)*/
// 1) function compare(a,b){return a-b}
//2)声明提前
//var compare = new Function
("a","b","return a-b");
// 在html中创建2个按钮一个是升序 一个是降序
//在js中创建一个数组 当点击升序的时候控
制输出升序排序 当点击降序的时候控制输出降序排序
// 5
// 随机数
// 公式 Math.random()
//任意范围内取随机数
//0~10 之间
//Math.random()*(max-min+1)+min
var sum = parseInt(Math.random()*(10-0+1)+0)
console.log(sum)