JavaScript(二)
引用类型(部分)
1.Object对象
js对象指的就是object对象,null 属于object
另:参考JavaScript(一)
2.数组
2.1 定义数组
//方式一:
var fruits = new Array();
//方式二:创建一个length为10的数组
var fruits = new Array(10);
//方式三:有初始值的数组
var fruits = new Array("apple","banana","pear");
//方式四:有初始值,区别于java-->String[] fruits = {"apple","banana","pear"};
var fruits = ["apple","banana","pear"];
//方式五:创建空数组
var fruits = [];
- 在JavaScript中,数组类似于java中的ArrayList(),可以自动扩展长度,即使用方式2/3/4定义了数组,也可以继续往里添加其他的值或其他类型的值
2.2 检测数组类型
//判断数组类型
var fruits = new Array();
//方式一:使用instanceof 同java
console.log(fruits instansof Array);//--->true
//方式二:ES5方法,Array.isArray(value)
console.log(Array.isArray(fruits));//--->true
2.3 数组转换成字符串
var fruits = new Array("apple","banana","pear");
alert(fruits.toString());//apple,banana,pear
alert(fruits.valueof());
alert(fruits);
2.4 join()方法,拼接数组字符串
var fruits = new Array("apple","banana","pear");
console.log(fruits.join("..."));//--->apple...banana...pear
2.5 操作数组
- 栈:先进后出(FILO first-in last-out)
var list = new Array();
//1.使用栈方法
//1.1增加元素:入栈 push()
list.push("java");
list.push("js");
//输出
for(var i in list){
/*结果:
0:java
1:js
*/
console.log(i+":"+list[i]);
}
//1.2 删除元素 出栈 pop()
var value = list.pop();
console.log(value);//--->js
console.log(list);//--->java
- 队列 先进先出(FIFO first-in-first-out)
var list = new Array();
//2.使用队列方法
//2.1 增加元素:入队 unshift()
list.unshift("c");
list.unshift("c++");
list.unshift("java","js");
for(var i in list){
/*结果:
0:java
1:js
2:c++
3:c
*/
console.log(i+":"+list[i]);
}
//2.2 删除元素 出队 shift() 取得第一项
var value = list.shift();
console.log(value);//--->java
console.log(list);//--->["js","c++","c"]
- 排序 reverse()/sort()
var list = ["a","g","d","e","h","c"];
//反转
list.reverse();
console.log(list);//--->["c", "h", "e", "d", "g", "a"]
-------------------------------------------------------
//字母排序
//排序:升序(对数字无效,必须用排序函数)
list.sort();
console.log(list);//--->["a", "c", "d", "e", "g", "h"]
//排序:自定义降序(对数字有效)
function compare(value1,value2){
if(value1<value2){
return 1;
}else if(value1>value2){
return -1;
}else{
return 0;
}
}
list.sort(compare);
console.log(list);//--->["h", "g", "e", "d", "c", "a"]
--------------------------------------------------------
//数字排序
var list2 = [10,3,4,30,24,11,8];
list2.sort();//-->[10, 11, 24, 3, 30, 4, 8] 此方式未正确排序
//原因:当数字大于10之后,sort()会按照数字字符串的ascall码值进行比较排序,像英文单词排序一样
//**自定义升序
function compare(value1,value2){
return value1-value2;
}
list.sort(compare);
console.log(list2);//--->[3, 4, 8, 10, 11, 24, 30]
---------------------------------------------------------
//**自定义降序
function compare(value1,value2){
return value2-value1;
}
list.sort(compare);
console.log(list2);//--->[30, 24, 11, 10, 8, 4, 3]
说明:对于自定义排序函数中,value2是当位置的元素,value1是下一个位置的元素
value1-value2 -----> 下一个 (减) 当前
------->
大于0 (理解:按当前v2,v1的顺序)
小于0 (换位置)
等于0 (相等,不变)
- 连接数组 concat()
//连接两个或更多的数组,并返回结果
var fruits = new Array("apple","banana","pear");
var fruits2 = fruits.concat("aa",["bb","cc"]);
console.log(fruits2);//--->["apple", "banana", "pear", "aa", "bb", "cc"]
-
选定数组元素 slice(start,end) 不更改原数组
其中end可省略,slice(a)表示范围[a,end]
slice(a,b)范围[a,b)
start:-1表示最后一个元素,-2表示倒数第二个元素,依此类推
end:为负数时,表示从后往前数,-1 :从后往前数最后一个元素(不包括)
//从已有的数组中返回选定的元素
var fruits = new Array("apple","banana","pear");
var fruits2 = fruits.slice(2);//--->选定第3个元素
console.log(fruits);//--->["apple", "banana", "pear"]
console.log(fruits2);//--->["pear"]
----------------------------------------------------
var fruits3 = fruits.slice(0,-1);
console.log(fruits2);//--->["apple", "banana"]
----------------------------------------------------
var fruits4 = fruits.slice(-1);
console.log(fruits4);//--->["pear"]
- 删除/添加数组元素 splice(必填,必填,可选) 返回被删除的项目 (更改原数组)
//1.两个参数splice(a,b)从a位置开始,删除b个元素
var fruits = new Array("apple","banana","pear");
var remove = fruits.splice(1,1);
console.log(remove);//--->["banana"]
console.log(fruits);//--->["apple", "pear"]
//2.从中间位置添加元素
var fruits = new Array("apple","banana","pear");
//从1的位置,删除0个元素并增加"orange","mango"两个元素
var inserted = fruits.splice(1,0,"orange","mango");
console.log(inserted);//--->[] 只返回删除的元素
console.log(fruits);//--->["apple", "orange", "mango", "banana", "pear"]
//3.从中间替换元素(删除再增加)
var fruits = new Array("apple","banana","pear");
//从1的位置删除1个元素,并增加"orange","mango"两个元素
var replaced = fruits.splice(1,1,"orange","mango");
console.log(replaced);//--->["banana"] 删除该元素
console.log(fruits);//--->["apple", "orange", "mango", "pear"]
-
查询元素
arr.indexOf(value):查询value在arr数组中的位置
arr.lastIndexOf(value):查询value在arr数字中最后的位置
-
修改元素
var fruits = new Array("apple","banana","pear");
fruits[1]="pineapple";
console.log(fruits);//--->["apple", "pineapple", "pear"]
- 清空元素(非常规)
var fruits = new Array("apple","banana","pear");
fruits.length = 0;
console.log(fruits);//--->[]
2.6 数组的迭代方法(ES5)
注:
function(item,index,array){...}
item:当前元素的值
index:当前元素的索引
array:当前元素属于的数组对象
- every(function):对数组中每一项运行给定函数,如果该函数对每一项都返回true,则返回true
var numbers = [1,2,3,4,5,3,2,1];
var everyResult = numbers.every(function(item,index,array){
return(item>2);
});
console.log(everyResult);//--->false
- some(function):对数组中每一项运行给定函数,如果该函数只要任意一项返回true,则返回true
var numbers = [1,2,3,4,5,3,2,1];
var someResult = numbers.some(function(item,index,array){
return(item>2);
});
console.log(someResult);//--->true
- filter(function):对数组中每一项运行给定函数,返回 该函数会返回true的项组成的数组
var numbers = [1,3,5,7,9,2,4,6,8,0];
var filterResult = numbers.filter(function(item,index,array){
if(item%2==0){
return item;
}
});
console.log(filterResult);//--->[2, 4, 6, 8]
- map():对数组中每一项运行给定函数,返回 每次函数调用的结果组成的数组.
var numbers = [1,3,5,7,9];
var mapResult = numbers.map(function(item,index,array){
return item*2;
});
console.log(mapResult);//--->[2, 6, 10, 14, 18]
- forEach():对数组中每一项运行给定函数,没有返回值,与for循环迭代数组一样
var fruits = ["apple", "orange", "mango", "banana", "pear"];
fruits.forEach(function(item,index,array){
cosole.log(index+":"+item);
});
/*
---> 0:apple
1:orange
2:mango
3:banana
4:pear
*/
3.Date 日期对象
//1.构建日期对象
var dateObj = new Date();//--->Thu Mar 04 2021 23:22:19 GMT+0800 (中国标准时间)
var fullYear = dateObj.getFullYear();//2021
var year = dateObj.getYear();//121,表示从1900年开始,过了多少年
var month = dateObj.getMonth()+1;//0表示1月(0~11)
var date = dateObj.getDate();//多好号
var day = dateObj.getDay();//星期:0:周日~ 6:周六
var hour = dateObj.getHours();//小时
var minute = dateObj.getMinutes;//分钟
var second = dateObj.getSeconds();//秒
//当前毫秒数
var millis = Date.now();//--->1614871339152
//打印星期几
var weeks = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
console.log(weeks[day]);//--->星期四
浙公网安备 33010602011771号