【js实例】Array类型的9个数组方法,Date类型的41个日期方法,Function类型

前文提要:【js实例】js中的5种基本数据类型和9种操作符

Array类型的9个数组方法

Array中有9个数组方法:

1.检测数组 2.转换方法 3.栈方法 4.队列方法 5.冲排序方法
6.操作方法 7.位置方法 8.迭代方法 9.归并方法

在实例中介绍,实例如下

/*
Array类型
js数组中的每一项可以用来保存任何类型的数据;js数组的大小是可以动态调整的
*/
var colors = ["red", "blue", "green"];
alert(colors[0]);    //red
alert(colors[1]);    //blue
alert(colors[2]);    //green
alert(colors[3]);    //undefined
alert(colors.length);
/*1.检测数组:instanceof(), isArray()*/
if (colors instanceof Array) {
    alert("yes");    //yes
}

if (Array.isArray(colors)) {
    alert("yes");    //yes
}
/*
转换方法:toString(), toLocaleString(), valueOf()
alert()要接收字符串参数,当传入alert()的不是字符串参数时它会在后台调用toString()方法
*/

//返回一个字符串,字符串由数组中每个值的字符串组成,并且以逗号分隔
alert(colors.toString());
//通常和toString()方法一样,但是它是调用数组中每一项的toLocaleString()方法
alert(colors.toLocaleString());
//先是valueOf()方法,调用toString()方法,(valueOf返回的是数组)
alert(colors.valueOf());
alert(colors);

//join接收一个参数,返回以参数做分隔符的所有数组项的字符串
alert(colors.join("~"));    //red~blue~green

/*
栈方法:push()和pop()
push()向数组中添加元素,返回修改后数组的长度
pop()移除数组中最后一项,返回移除的项
*/

var colors = ["red", "blue", "green"];
var count = colors.push("white", "yellow");
alert(count);            //5
alert(colors.length);    //5
alert(colors);            //red,blue,green,white,yellow

var item = colors.pop();
alert(item);            //yellow
alert(colors.length);    //4
alert(colors);            //red,blue,green,white

/*
队列方法:shift()和unshift()
shift()移除数组的第一项并返回移除的项
unshift()在数组的第一项之前添加任意项,并返回数组的长度
*/
var colors = ["red", "blue", "green"];
var item = colors.shift();
//shift()
alert(item);            //red
alert(colors.length);    //2
alert(colors);            //blue,green
//unshift()
var count = colors.unshift("white", "yellow");
alert(count);            //4
alert(colors.length);    //4
alert(colors);            //white,yellow,blue,green

/*
排序方法:reverse()和sort()
reverse()会反转数组想的顺序,返回排序后的数组
sort()比较的是字符串,接收的参数会调用每个数组项的toString()方法,返回排序后的数组
sort()接收的参数也可以是函数
*/
//reverse()
var value = [1, 3, 5, 2, 10];
var values = value.reverse();
alert(value);        //10,2,5,3,1
alert(values);        //10,2,5,3,1

//sort()
var value = [1, 3, 5, 2, 10];
var values = value.sort();
alert(value);        //1,10,2,3,5
alert(values);        //1,10,2,3,5

/*
操作方法:concat(), slice()和splice()
concat()创建当前数组的副本,若有参数则将其添加到副本数组尾部,最后返回新创建的数组

slice()基于当前数组创建新数组,但是不改变原数组;接收两个参数start, end
start为返回项的起始位置,end为返回项的结束位置(具体见例子),

splice(),接收2个或3个参数通常用于删除,插入或替换(插入和替换都要产生删除操作,删除项数可为0),返回删除的项
删除:splice(x, y);
x为删除的起始位置,y为要删除的项数
插入和替换(通过改变参数实现):splice(x, y, z);
x为起始位置,y为要删除的项数,z为要插入的项;z可以是任意多个项
*/
//concat()
var colors = ["red", "blue", "green"];
var colors2 = colors.concat();
alert(colors);        //red,blue,green
alert(colors2);        //red,blue,green
var colors3 = colors.concat("yellow", ["black", "brown"]);
alert(colors);        //red,blue,green
alert(colors3);        //red,blue,green,yellow,black,brown

//slice()
var colors = ["red", "blue", "green", "yellow", "black"];
//1.若有一个参数,则返回从起始位置到原数组末尾所组成的数组
var colors2 = colors.slice(1);
//2.若有两个参数,则返回从起始位置到结束位置前一项所组成的数组
var colors3 = colors.slice(1, 4);
//3.若start < end时返回空数组
var colors4 = colors.slice(2, 1);
//4.若参数为负数,则参数加上数组长度作为start或者end
var colors5 = colors.slice(-3, -1);

alert(colors);        //red,blue,green,yellow,black
alert(colors2);        //blue,green,yellow,black
alert(colors3);        //blue,green,yellow
alert(colors4);        //返回空数组,屏幕上显示空白警告框
alert(colors5);        //green,yellow

//splice()
//删除
var colors = ["red", "blue", "green", "yellow", "black"];
var remove = colors.splice(1, 2);
alert(colors);    //red,yellow,black
alert(remove);    //blue,green

//插入
var colors = ["red", "blue", "green", "yellow", "black"];
var remove2 = colors.splice(1, 0, "white", "brown");    //删除项数为0
alert(colors);        //red,white,brown,blue,green,yellow,black
alert(remove2);        //空数组

//替换
var colors = ["red", "blue", "green", "yellow", "black"];
var remove2 = colors.splice(1, 1, "white", "brown");    //删除项数为1
alert(colors);        //red,white,brown,green,yellow,black
alert(remove2);        //blue

/*
位置方法:indexOf()和lastIndexOf()
两个方法用于返回查找项在数组中的位置,未找到返回-1;都接收两个参数x和y, x:要查找的项;y:查找起始点位置的索引(可选参数)

indexOf()从数组开头向后查找查找并返回查找参数的第一个位置,找不到返回-1;
lastIndexOf()从数组末尾向前查找,返回查找参数的第一个位置

注意:要查找的项必须严格相等(===)
*/
var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
//indexOf()
alert(numbers.indexOf(4));        //3
alert(numbers.indexOf(4, 4));    //5
alert(numbers.indexOf(4, 6))    //-1
alert(numbers.indexOf(10));        //-1
//lastIndexOf()
alert(numbers.lastIndexOf(4));        //5
alert(numbers.lastIndexOf(4, 4));     //3
alert(numbers.lastIndexOf(4, 2));    //-1
alert(numbers.lastIndexOf(10))        //-1

//要查找的项必须严格相等(===)
var person = {name : "Nicholas"};
var people = [{name : "Nicholas"}];
var morePeople = [person];    //注意这是数组

alert(people.indexOf(person));        //-1
alert(morePeople.indexOf(person));    //0

/*
迭代方法:every(), filter(), forEach(), map(), some()
每个方法接收两个参数:函数参数x,运行该函数的作用域对象y
函数参数x接收三个参数:数组项的值,该项在数组中的位置和数组对象本身

every():对数组中的每一项运行给定的函数,如果该函数对每一项都返回true,则返回true
some():对数组中的每一项运行给定的函数,如果该函数中某一项返回true,则返回true
filter():对数组中的每一项运行给定的函数,返回该函数会返回true的项组成的数组
forEach():对数组中的每一项运行给定的函数,无返回值
map():对数组中的每一项运行给定的函数,返回每次函数调用结果组成的数组
*/

var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
//every()
var everyResult = numbers.every(function(item, index, array) {
    return (item > 2);
});
alert(everyResult);        //false

//some()
var someResult = numbers.some(function(item, index, array) {
    return (item > 2);
});
alert(someResult);        //true

//filter()
var filterResult = numbers.filter(function(item, index, array) {
    return (item > 2);
});
alert(filterResult);    //3,4,5,4,3

//map()
var mapResult = numbers.map(function(item, index, array) {
    return item * 2;
});
alert(mapResult);        //2,4,6,8,10,8,6,4,2

/*
归并方法:reduce()和reduceRight()
接收两个参数:一个在数组每一项调用的函数x,作为归并基础的初始值y(可选)
函数x:接收四个参数,前一个值,当前值,项的索引和数组对象
reduce():从数组的第一项开始
reduceRight():从数组的最后一项开始
*/

var values = [1, 2, 3, 4, 5];
//reduce()
var sum = values.reduce(function(prev, cur, index, array) {
    return prev + cur;
});
alert(sum);        //"15"

//redeceRight()
var sum2 = values.reduceRight(function(prev, cur, index, array) {
    return prev + cur;
})
alert(sum2);    //"15"

Date类型的41个日期方法

Date类型可分为如下:

继承的方法:Date(), parse(),toLocaleString(),toString()和valueOf()方法;

日期格式化方法:

toDateString()
toTimeString()
toLocaleDateString()
toLocaleTimeString()
toUTCString()

日期/时间组件方法:getTime(), getTimezoneOffset()等

具体在实例中给出:

/*
Date类型
*/
var now = new Date();
alert(now);
//继承的方法
//Date.parse()接收一个表示日期的字符串参数,根据参数返回相依日期的毫秒数;
//ECMA-262规范没有定义此函数支持的格式,应地区实现而异
var someDate = new Date(Date.parse("May 25, 2004"));
alert(someDate);    //Tue May 25 2004 00:00:00 GMT+0800

//Date.UTC()方法接收7个参数:年year,月month(0开始),日day(1-31),小时hour(0-23),分钟min,秒s,毫秒ms
//year和month为必须参数;day默认为1,其它参数默认为0

var y2k = new Date(Date.UTC(2000, 0));
alert(y2k);            //Sat Jan 01 2000 08:00:00 GMT+0800

var allFives = new Date(Date.UTC(2005, 4, 5, 17, 55, 55, 3600));
alert(allFives);    //Fri May 06 2005 01:55:58 GMT+0800

//Date()构造函数会模仿Date.parse()和Date.UTC()方法
var d = new Date("May 25, 2004");
var dd = new Date(2005, 4, 5, 17, 55, 55, 3600);
alert(d);        //Tue May 25 2004 00:00:00 GMT+0800
alert(dd);        //Fri May 06 2005 01:55:58 GMT+0800

/*
Date类型也重写了toLocaleString(),toString()和valueOf()方法;
但是浏览器之间对toLocaleString()和toString()输出不一致.下面输出为火狐浏览器下输出
*/
var date = new Date("1, 1, 2001");
alert(date);                    //Mon Jan 01 2001 00:00:00 GMT+0800
alert(date.toLocaleString());    //2001/1/1 上午12:00:00
alert(date.toString());            //Mon Jan 01 2001 00:00:00 GMT+0800
//注意:valueOf()方法返回的是日期的毫秒数
alert(date.valueOf());            //978278400000

/*
日期格式化的方法
这些方法也是因浏览器而异,以下为火狐浏览器输出
*/
var date = new Date("1, 1, 2001");
//toDateString():以特定于实现的格式显示星期几,月,日和年
alert(date.toDateString());        //Mon Jan 01 2001
//toTimeString():以特定于实现的格式显示时,分,秒和时区
alert(date.toTimeString());        //00:00:00 GMT+0800
//toLocaleDateString():以特定于地区的格式显示星期几,月,日和年
alert(date.toLocaleDateString());        //2001/1/1
//toLocaleTimeString():以特定于实现的格式显示时,分,秒
alert(date.toLocaleTimeString());        //上午12:00:00
//toUTCString():以特定与实现的格式完整的UTC日期
alert(date.toUTCString());        //Sun, 31 Dec 2000 16:00:00 GMT

/*
日期/时间组件方法
*/
var date = new Date(2001, 1, 1);
//返回表示日期的毫秒数,与valueOf()返回的值相同
alert(date.getTime());
//返回本地时间与UTC世纪那相差的分钟数
alert(date.getTimezoneOffset());
//以毫秒数设置日期,传入参数为毫秒
alert(date.setTime(3600000000000));//参数为为毫秒数

//年
var date = new Date(2001, 1, 1);
//取得四位数的年份
alert(date.getFullYear());
//返回UTC日期的4位数年份
alert(date.getUTCFullYear());
//设置日期年份,传入参数必须为4位数
alert(date.setFullYear(2002));    //参数为年
//设置UTC日期年份,传入参数必须为4位数
alert(date.setUTCFullYear(2003));//参数为年

//月:0-11
var date = new Date(2001, 1, 1);
//返回日期中的月份
alert(date.getMonth());
//返回UTC日期中的月份
alert(date.getUTCMonth());
//设置日期的月份,传入参数必须大于0,超过则增加年份
alert(date.setMonth(1));//参数为月
//设置UTC日期的月份,传入参数必须大于0,超过则增加年份
alert(date.setUTCMonth(2));//参数为月

//日:1-31
var date = new Date(2001, 1, 1);
//返回日期月份中的天数
alert(date.getDate());
//返回UTC日期月份中的天数
alert(date.getUTCDate());
//设置日期月份中的天数
alert(date.setDate(23));//参数为日
//设置UTC日期月份中的天数
alert(date.setUTCDate(24));//参数为日

//星期:1-6,0表示星期日
var date = new Date(2001, 1, 1);
//返回日期中的星期几
alert(date.getDay(2));
//返回UTC日期中的星期几
alert(date.getUTCDay(3));

//时:0-23
var date = new Date(2001, 1, 1);
//返回日期中的小时数
alert(date.getHours());
//返回UTC日期中的小时数
alert(date.getUTCHours());
//设置日期中的小时数
alert(date.setHours(2));//参数为时
//设置UTC日期中的小时数
alert(date.setUTCHours(3));//参数为时

//分:0-59
var date = new Date(2001, 1, 1);
//返回日期中的分钟数
alert(date.getMinutes());
//返回UTC日期中的分钟数
alert(date.getUTCMinutes());
//设置日期中的分钟数
alert(date.setMinutes(34));//参数为分
//设置UTC日期中的分钟数
alert(date.setUTCMinutes(35));//参数为分

//秒:0-59
var date = new Date(2001, 1, 1);
//返回日期中的秒数
alert(date.getSeconds());
//返回UTC日期中的秒数
alert(date.getUTCSeconds());
//设置日期中的秒数
alert(date.setSeconds(45));//参数为秒
//设置UTC日期中的秒数
alert(date.setUTCSeconds(46));//参数为秒

//毫秒
var date = new Date(2001, 1, 1);
//返回日期中的毫秒数
alert(date.getMilliseconds());
//返回UTC日期中的毫秒数
alert(date.getUTCMilliseconds());
//设置日期中的毫秒数
alert(date.setMillseconds(3454));//参数为毫秒
//设置UTC日期中的毫秒数
alert(date.setUTCMillseconds(1111));//参数为毫秒

Function类型

/*
函数Function 类型
*/
/*
1.函数是对象,函数名是只想函数对象的指针,不会与函数绑定(函数是对象,函数名是指针)
*/
function sum(num1, num2) {
    return num1 + num2;
}
alert(sum(10, 10));    //20

var anotherSum = sum;
alert(anotherSum(10, 10));    //20

//sum是函数的指针并不与函数绑定
sum = null;
alert(anotherSum(10, 10));    //20

/*
2.函数没有重载
*/
function addNum(num) {
    return num + 100;
}

function addNum(num) {
    return num + 200;
}

alert(addNum(100));    //300

/*
3.解析器会通过“函数声明提升”将函数声明添加到执行环境中去,而函数表达式则须解析器执行到它所在的代码行才会被执行
*/
alert(sum(10, 10));    //20
function sum(num1, num2) {
    return num1 + num2;
}

alert(sum2(19, 10));    //error
var sum2 = function(num1, num2) {
    return num1 + num2;
}

/*
4.函数的内部属性:arguments和this,callee,caller
注意:不能在严格模式下使用callee,caller
*/
//arguments保存函数的参数,该对象还有一个callee的属性,callee是一个指针,指向拥有arguments对象的函数
function factorial(num) {
    if (num <= 1) {
        return -1;
    } else {
        return num * arguments.callee(num - 1);
    }
}

alert(4);        //24

//this引用的是函数执行的环境对象。
var color = "red";
var o = {color : "blue"};

function showColor() {
    alert(this.color);
}

//直接调用函数则this引用的环境对象是window
showColor();        //red
alert(window.color);//red
//this引用的环境对象是o,所以调用的是o中的color
o.showColor();        //red

/*
caller保存至调用当前函数的函数的引用(在全局作用域中调用当前函数则值为null),除opera早期版本不支持外其他都支持,
注意:ECMAScript并没有定义这个属性
*/
function outer() {
    inner();
}

function inner() {
    alert(inner.caller);
}

outer();    //显示outer函数的源代码

/*
apply(), call()
apply():接收两个参数x,y;x为运行函数的作用域,y为参数数组(可以为Array实例)
call():第一个参数与apply()类似,但是后面的参数不已数组形式传递,而是直接传递给数组
*/
function sum(num1, num2) {
    return num1 + num2;
}

//注意:在严格模式下,未指定环境对象而调用函数则this值不会转型为window,this此时为undefined
function callSum1(num1, num2) {
    return sum.apply(this, arguments);
}
function callSum2(num1, num2) {
    return sum.apply(this, [num1, num2]);
}
alert(callsum1(10 ,10));    //20
alert(callsum2(10 ,10));    //20

function sum(num1, num2) {
    return num1 + num2;
}
function callSum(num1, num2) {
    return sum.call(this, num1, num2);
}
alert(callSum(10, 10));        //20
时间: 2024-12-26 14:21:44

【js实例】Array类型的9个数组方法,Date类型的41个日期方法,Function类型的相关文章

js拖拽换位置,使用数组方法

之前一直需要一个拖拽效果,网上找了些感觉不是不好用,就是写的有些地方让人不太满意,下面贡献一个自己写的.亲测可用,拖动后可互换位置!(带有注释) 方法/步骤 CSS代码部分 <style> * { padding:0;margin:0;list-style: none } html,body { height:100%; overflow:hidden; } ul { margin:50px auto;position:relative; width:1100px; height:500px;

String类型,Function类型

1.String类型:  1)创建String对象:    var str=new String(s);    String(s);    参数:参数 s 是要存储在 String 对象中的值或转换成原始字符串的值.    返回值:当String()和运算符new一起作为构造函数使用时,它返回一个新创建的String对象,存放的是字符串s          当不用 new 运算符调用String()时,它只把 s 转换成原始的字符串,并返回转换后的值. 2)String对象属性:    leng

【JavaScript】Function类型

JavaScript中,每个函数都是Function类的一个实例. 也就是说每一个定义的函数名都是指向Function类型的一个实例. 函数名中存放的是函数的指针(Function类型实例指针). 可以使用Function的构造函数实现,最后一个参数被视为函数体,如: var sum = new Function("num1","num2","return num1+num2");   //不推荐 1.没有重载 因为函数名中存放的是指针,重新定义

JS中Array数组的三大属性用法

Array数组主要有3大属性,它们分别是length属性.prototype属性和constructor属性. JS操作Array数组的方法及属性 本文总结了Array数组的3个属性,length属性.prototype属性.constructor属性使用,并附注Array数组对象的8个分类及多个方法使用,具体如下: 对象的3个属性 1.length属性 length属性 Length属性表示数组的长度,即其中元素的个数.因为数组的索引总是由0开始,所以一个数组的上下限分别是:0和length-

《JS权威指南学习总结--7.10 数组类型》

内容要点: 一.数组类型 判断它是否为数组通常非常有用.在ES5中,可以使用Array.isArray()函数来做这件事情: Array.isArray([]); //=>true Array.isArray({}); //=>false 二.类数组对象 JS数组的有一些特性是其他对象所没有的: 1.当有新的元素添加到列表中时,自动更新length属性. 2.设置length为一个较小值将截断数组. 3.从Array.prototype中继承一些有用的方法. 4.其类属性为"Arra

JS数组方法汇总 array数组元素的添加和删除

js数组元素的添加和删除一直比较迷惑,今天终于找到详细说明的资料了,先给个我测试的代码^-^ var arr = new Array(); arr[0] = "aaa"; arr[1] = "bbb"; arr[2] = "ccc"; //alert(arr.length);//3 arr.pop(); //alert(arr.length);//2 //alert(arr[arr.length-1]);//bbb arr.pop(); //al

JS引用类型 -- Array类型

ECMAScript数组与其他语言中的数组都是数据的有序列表,但与其他语言不同的是,ECMAScript数组的每一项可以保存任何类型的数据.而且ECMAScript数组的大小是可以动态调整的,即可以随着数据的添加自动增长. 创建数组的基本方式有两种: 第一种是使用Array构造函数: //1. 使用Array构造函数 var colors = new Array(); //2.如果预先知道数组要保存的项目数量,也可以给构造函数传递该数量,改数量会自动变成length的属性值 var colors

JS数组方法汇总 array数组元素的添加和删除 - yuzhongwusan - 博客园

body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;

JS 数组方法 array数组声明 元素的添加和删除 等

声明数组 var arr1 = [1,2,3,4,5]; var arr2 = new Array(100); //声明长度为100的arr2数组. arr2=[]; arr2.length = 100; var arr3 = new Array([1,2,3,4,5]); //是一个二维数组. arr3 = [[1,2,3,4,5]]; arr3.length = 1; arr3[0] = [1,2,3,4,5];arr3[0].length = 5; var arr4 = new Array