内置对象:浏览器中自己封装好的对象,我们可以直接调用它的属性和方法。
数组字符串数学日期
数组:
的ECMAScript中的数组数组的每一项可以保存任意类型数据。长度可以调整,随着数据增加可以增长。
学习目标:
- 创建数组
- 数组元素读写
- 数组的长度属性
创建数组的基本方式:
- Array构造函数,new Array()。说明:1。预先知道数组要保存的项目数量2.向构造函数中传递数组应包含的项。
var colors=new Array();
var nums=new Array(1,3,6,9);
document.write(colors);//
document.write(nums);//1,3,6,9
console.log(colors)//[]
console.log(nums)//[1,3,6,9]
2.使用数组字面量表示法。由一对包含数组项的方括号[]表示,多个数组项之间以逗号隔开。
var cols=["red","green","grey"];
var info=[6,"marry",true,{email:"[email protected]"}];
console.log(info)
数组元素的读写:
var cols=["red","green","grey"];
var colors=new Array();
//设置
colors[0]="#fff";
colors[1]="#0f0";
colors[1]="#0f3";
var info=[6,"marry",true,{email:"[email protected]"}];
//读取
console.log(cols[1]);
数组的长度:array.length返回值:number
说明:
- 通过设置长度可以从数组的末尾移除项或向数组中添加新项。
- 把一个值放在超出当前数组大小的位置上时,会重新计算数组长度值,长度值等于最后一项索引加1。
//说明1
var arr=["a","b","c","d"];
arr.length=3;//移除项。不建议
console.log(arr);//["a","b","c"]
//说明2
arr[99]="z";
console.log(arr.length);//100
数组遍历:
var arr=["a","b","c","d"];
for(var i=0;i<arr.length;i++){
console.log(arr[i])
}
学习目标:
掌握数组的栈方法:
- push()
- unshift()
- shift()
- pop()
push():把它的参数顺序添加到尾部返回值:。把指定的值添加到数组后的长度也就是返回的是数
var cols=["red","green","grey"];
var len=cols.push("blue");
console.log(len);//4
unshift():把它的参数顺序添加到开头返回值:。把指定的值添加到数组后的长度也就是返回的是数
shift():删除第一个元素返回值:被删除的那个元素
pop():删除最后一个元素返回值:被删除的那个元素
学习目标:
- 数组的转换方法
- 数组的重排序方法
join:arrayObject.join(separator)。用于把数组中的所有元素放入一个字符串。把数组转换成字符串。返回值:字符串。
加入默认以逗号分隔。
var nums=[2,4,5];
console.log(nums.join())//2,4,5
var words=["bored","interesting","hello","love"];
var str=words.join("-");//bored-interesting-hello-love
console.log(str);
var cols=["red","green","grey"];
var colstr=cols.join("");//redgreengrey
console.log(colstr);
reverse:用于颠倒数组中元素的顺序返回值:数组。
//返回字符串542
var nums=[2,4,5];
console.log(nums.reverse().join());
sort():用于对数组的元素进行排序。返回值:数组。
说明:
- 即使数组中的每一项都是数值,排序()方法比较的也是字符串。
- 排序()方法可以接收一个比较函数作为参数。
- 实际是的toString()了一下转成字符串了,都是按照字符串来比较的。
var nums=[12,14,88,9,23];
console.log(nums.sort());//按字符串比较
//[12, 14, 23, 88, 9]
nums.sort(function(a,b){return b-a});//降序
console.log(nums);//[88, 23, 14, 12, 9]
concat():连接两个或多个数组。返回值:数组。
var arr1=["a","b","c"],arr2=["d","e",1,3],arr3;
arr3=arr1.concat(arr2,"n",8,99);
console.log(arr3);//["a", "b", "c", "d", "e", 1, 3, "n", 8, 99]
slice():从已有的数组中返回选定的元素。返回值:数组。
参数:启动(必需)规定从何处开始选取,如是负数,从数组尾部开始算起。
端(可选)规定从何处结束选取,是数组片段结束除的数组下标。
说明:
- 如没有指定结束,切分的数组包含从开始到数组结束的所有元素。
- 如切片方法的参数中有一个负数,则用数组长度加上该数确定相应的位置。
- 截取从开始和结束(不包含该元素)的元素,即从开始到结束-1的元素。
var cols=["red","green","grey","yellow","orange"];
var newcols1=cols.slice(1,2);
console.log(newcols1)//["green"]
var newcols2=cols.slice(-2,5);//3,4
console.log(newcols2);//["yellow", "orange"]
//完成以下代码段,实现b数组对a数组的拷贝,方法越多越好
var a=[1,"yes",3],b;
//1
b=new Array();
for(var i=1;i<= a.length;i++){
b.push(a[i]);
}
console.log(b);
//2
b=[].concat(a);
console.log(b);
//3
b= a.slice(0);
console.log(b);
学习目标:
- splice()方法删除数组项
- 插入数组项
- 替换数组项
删除操作:splice(index,count),删除从索处开始的零个或多个元素。返回值:含有被删除元素的数组。如果count不设置,则删除从索引开始的所有值。
插入:splice(index,0,item1,.....,itemX)在指定位置插入值。
参数:index是起始位置.0要删除的项数.item1,.....,itemX:要插入的项。返回值:空的数组即[]。
替换:剪接(指数,计数,物品1,......,itemX),删除指定位置的值,并且在指定位置插入。
参数:Index:起始位置,count:要删除的项.item1,.....,itemX:要插入的项。返回值:从原始数组中删除的项(如果没有任何项,则返回空数组)
var arr=["a","b","c","d","e","k","l","m"];
//删除
var delarr=arr.splice(2,2);
console.log(arr);//["a", "b", "e", "k", "l", "m"]
console.log(delarr);// ["c", "d"]
//插入
var insertarr=arr.splice(3,0,"o","p");
console.log(arr);//["a", "b", "e", "o", "p", "k", "l", "m"]
console.log(insertarr);//[]
//替换
var replacearr=arr.splice(3,2,"x","y","z");
console.log(replacearr);//["o", "p"]
console.log(arr);//["a", "b", "e", "x", "y", "z", "k", "l", "m"]
学习目标:掌握的ECMAScript为数组实例添加的两个位置方法:的indexOf(),lastIndexOf()
indexOf(searchvalue,startIndex)从指定位置开始向后查找,若没有,则从0开始。
参数:searchvalue:必需,要查找的项.startIndex:可选,起点尾椎的索引返回值:数,查找要查找的项在数组中第一次出现的的位置,没有找到的情况下返回 - 1。
var nums=[1,7,5,7,8,6,99];
var pos=nums.indexOf(7);
console.log(pos);//1
lastIndexOf(searchvalue,startIndex)从数组的末尾开始向前查找出现第一个searchvalue的索引。参数和返回值与indexOf一致。
var nums=[1,7,5,7,8,6,99];
var pos=nums.lastIndexOf(7);
console.log(pos);//3
//封装一个方法实现indexOf的功能
var nums=[1,7,5,7,8,6,99];
function ArrayIndexOf(arr,value){
for(var i=0;i<arr.length;i++){
if(arr[i]===value){
return i;
}
}
return -1;
}
var pos2=ArrayIndexOf(nums,99);
console.log(pos2)
说明:
- 在比较一个参数与数组中的每一项时,会使用全等操作符,即要求查找的项必须严格相等。
- 数组的位置方法是ECMAScript5为数组实例新增的,所以支持的浏览器只有:IE9 +,Firefox2 +,Safari3 +,Opera9.5
sort()方法:用于对数组的元素进行排序。返回值:原数组上进行排序,原数组会发生变化,不会生成新的数组。
arrObject.sort(function)
function | 可选,规定数组的排序顺序 |
a,b | function的参数,代表每次排序时比较的两个数组的项。当返回值为1时,就交换两个数组项的顺序,否则就不交换。 |
参数说明:
1.如果不使用参数,那么会按照字符编码的顺序进行比较。它会将数组里面的项转化为字符串然后去比较。
/*2--50
23--5051
3--51
33--5151
1--49
12--4950
49>4950>50>5051>51>5151
*/
var arr=[2,23,3,33,1,12];
var arrsort=arr.sort();
console.log(arrsort);//[1, 12, 2, 23, 3, 33]
2.如果想根据需求进行升序或降序,那么我们就要用到参数了。它的参数是一个函数,该函数会对两个值进行比较。
var arr=[1,2,0,21,15,6,34,9,45];
var arrsort=arr.sort(function(a,b){return a>b});
console.log(arrsort);
//[0, 1, 2, 6, 9, 15, 21, 34, 45]