JS-Array
数组的基本使用
<script type="text/javascript">
//在JS中用[]代表数组
console.log([]);
//数组在js中属于引用类型的数据
console.log(typeof []);//object
//数组可以有序存储很多任意类型的数据
console.log([1,true,NaN,"吃饭",null,function(){}]);
//数组在使用的时候,可以将数组赋值给变量进行存储,通过访问变量名字就可以操作数组
var arr = ["吃饭","睡觉","打豆豆",1,NaN,false];
console.log(arr);
</script>
<script type="text/javascript">
var arr = ["吃饭","睡觉","打豆豆",1,NaN,false];
//读取数据,利用枚举法获取数组里面的元素
console.log(arr[0]);//吃饭
console.log(arr[1]);//睡觉
console.log(arr[4]);//NaN
console.log(arr[99]);//undefined
console.log(arr[-99]);//undefined
//修改已有的数据
arr[0] = "学习";
arr[4] = "帅呆了";
console.log(arr);
//给数组添加新的数据
arr[6] = "明天";
arr[99] = "么么哒";
console.log(arr);
</script>
数组length属性
<script type="text/javascript">
var arr = [1,2,3,4,5,6,[7,8,9],"asdf"];
//length属性
//主要作用是获取到元素的总个数
console.log(arr.length);//8
console.log(arr[7].length);//4
console.log(arr[6].length);//3
console.log(arr[6][1]);//8
//数组的length属性:经常结合循环语句遍历数组里面的元素
var arr2 = ["张三","李四","王五"];
for (var i = 0; i < arr2.length; i++) {
console.log(arr2[i]);
}
</script>
数组的push与pop
<script type="text/javascript">
var arr = ["小鸡","发财","白班","一同"];
//push可以在数组的尾处添加一个或多个元素
arr.push("曹操","刘备");
console.log(arr);
//pop可以在数组的尾处移除一个元素
arr.pop();
console.log(arr);
</script>
数组的unshift和shift
<script type="text/javascript">
var arr = ["猫","狗","猪"];
//unshift:可以向数组的头部添加一个或多个元素
arr.unshift("鸡","鸭");
console.log(arr);
//shift:可以向数组的头部移除一个元素
arr.shift();
console.log(arr);
</script>
数组的join和reverse
<script type="text/javascript">
var arr = [1,2,3,4,5,6];
//join:可以通过某一个字符,将数组转化为字符串,对起始数组没有影响
var str = arr.join("*");
console.log(str);//1*2*3*4*5*6
console.log(arr);//[1,2,3,4,5,6]
//reverse:将数组倒置
arr.reverse();
console.log(arr);//[6, 5, 4, 3, 2, 1]
</script>
数组的indexOf和includes
<script type="text/javascript">
var arr = ['吃饭','睡觉','烫头'];
//indexOf:可以获取某个元素的索引值
console.log(arr.indexOf("吃饭"));//0
console.log(arr.indexOf("打豆豆"));//-1
//includes:检测数据是不是当前数组的元素
console.log(arr.includes("打豆豆"));//false
console.log(arr.includes("睡觉"));//true
</script>
数组的slice和splice
<script type="text/javascript">
var arr = ["张飞","刘备","关羽","马超","黄忠","曹操"];
//slice:切割某一个数组,并返回一个新的数组,对起始数组没有影响
//传参至少一个元素,最多两个参数【都是数组的索引值】,包含起始,不包含结束
var arr2 = arr.slice(2);
console.log(arr2);//["关羽","马超","黄忠","曹操"]
var arr3 = arr.slice(1,4);
console.log(arr3);//["刘备","关羽","马超"]
</script>
<script type="text/javascript">
var arr = [1,2,3,4,5,6];
//splice:可以对当前数组进行切割、插入、替换元素操作
//切割:第一个参数切割起始位置索引值
//传递一个
// var arr1 = arr.splice(2);
// console.log(arr1);//[3, 4, 5, 6]
// console.log(arr);//[1, 2]
//传递两个参数:第一个参数是起始位置,第二个参数切割长度
// var arr1 = arr.splice(2,3);
// console.log(arr1);//[3, 4, 5]
// console.log(arr);//[1, 2, 6]
//插入:在索引值2的位置切割出0个元素,插入一个元素么么哒
// var arr1 = arr.splice(2,0,"么么哒");
// console.log(arr1);//[]
// console.log(arr);//[1,2,"么么哒",3,4,5,6]
//替换:从索引值为2的位置切割出2个元素,使用领,名进行替换
var arr1 = arr.splice(2,2,"领","名");
console.log(arr1);//[3, 4]
console.log(arr);//[1, 2, "领", "名", 5, 6]
</script>
练习
<script type="text/javascript">
//声明一个函数rev(arr,n),返回一个数组
//如【1,2,3,4,5】n=1返回【5,1,2,3,4】
function rev(arr,n){
for (var i = 0 ;i < n ; i++) {
var str = arr.pop();
arr.unshift(str);
}
return arr
}
var arr = [1,2,3,4,5];
var newArr = rev(arr,1);
console.log(newArr);
</script>
<script type="text/javascript">
//封装一个函数Max(arr),需要将数组中最大的数值返回
function Max(arr){
var max = arr[0];
for (var i = 1; i < arr.length; i++) {
if(max < arr[i]){
max = arr[i];
}
}
return max;
}
var result = Max([1,2,5,8,9,6,3,10,2,1,55,33]);
console.log(result);
</script>
<script type="text/javascript">
//封装一个函数uniq(arr),将数组中的重复元素去除
function uniq(arr){
var result = [];
for (var i = 0;i < arr.length;i++) {
if(result.indexOf(arr[i])<0){
result.push(arr[i]);
}
}
return result;
}
var result = uniq([1,2,2222,2,2,3,3,3,5,4,6,5,4]);
console.log(result);
</script>
堆栈空间
<script type="text/javascript">
//基本数据类型值相等判断:依据的是数值是否相等
//这两个值100存储于栈空间
var a = 100;
var b = 100;
console.log(a==b);//true
</script>
<script type="text/javascript">
//引用类型的值存储在堆空间
//a和b比较的是地址
var a = [];
var b = [];
console.log(a==b);//false
</script>