JavaScript(二)---引用类型

Posted on 2021-03-05 14:27  萌栈师  阅读(150)  评论(0)    收藏  举报

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]);//--->星期四

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3