js-Array对象(数组)、arguments(伪数组)、高级迭代、清空数组
数组
赋值(初始化)
☞Array对象赋值方式(常用)
var mycars=new Array("Saab","Volvo","BMW");
console.log(mycars);
var mycars=new Array(); mycars[0]="Saab"; mycars[1]="Volvo"; mycars[2]="BMW"; console.log(mycars);
//也可以使用一个整数自变量来控制数组的容量: var mycars=new Array(3); mycars[0]="Saab"; mycars[1]="Volvo"; mycars[2]="BMW"; console.log(mycars);
☞数组直接赋值(最常用)
var mycars = ["Saab","Volvo","BMW"]; console.log(mycars);
☞数组中通过下标的方式进行赋值。下标从0开始。
获取数组中的某个元素
数组名[索引值];
修改数组
数组名[索引值] = "赋值";删除数组
slice() //从当前数组中截取一个新的数组,不影响原来的数组,参数start从0开始,end从1开始
新数组 = 数组1.slice(索引1,索引2);
splice()//删除或替换当前数组的某些项目,参数start,deleteCount,options(要替换的项目) 返回替换的元素
新数组 = 数组1.splice(起始索引,结束索引,替换内容);
查-->遍历
数组遍历(数据的元素个数 length属性)
数组名.length获取数组长度(元素个数)For/In 循环
JavaScript for/in 语句循环遍历对象的属性:
for( 索引名 in 数组名){
循环语句
}
var mycars = ["Saab","Volvo","BMW"]; for(index in mycars){ console.log(index); console.log(mycars[index]); }
数组方法
concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
数组转字符串:
join() 方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。
var a, b; a = new Array(0,1,2,3,4); b = a.join("-"); //"0-1-2-3-4"
toString() 方法可把数组转换为字符串,并返回结果。
实现方法为将字符串按某个字符切割成若干个字符串,并以数组形式返回,示例代码如下:
var s = "abc,abcd,aaa"; ss = s.split(",");// 在每个逗号(,)处进行分解 ["abc", "abcd", "aaa"]
var s1 = "helloworld";
ss1 = s1.split(''); //m默认的逗号分隔 ["h", "e", "l", "l", "o", "w", "o", "r", "l", "d"]
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
reverse() 方法用于颠倒数组中元素的顺序。
sort() 方法用于对数组的元素进行排序。
slice() 方法可从已有的数组中返回选定的元素。
splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。注释:该方法会改变原始数组。
补充:
判断数组
Instanceof: 是一个关键字。 判断A是否是B类型。
布尔类型值 = A Instanceof B ;
Array.isArray() //HTML5中新增 判断是不是数组
布尔类型值 = Array.isArray(变量) ;
pop() //删除数组中的最后一项,返回最后一项
被删除的元素 = 数组1.pop();
unshift() //在数组最前面插入项,返回数组的长度
数组1改后的长度 = 数组1.unshift(元素1);
shift() //删除数组中的第一个元素,返回最后一项
被删除的元素 = 数组1.shift();
sort(); //给数组排序,返回排序后的数组。如何排序看参数。
从小到大排序后的数组 = 数组1.sort(function(a,b){
return a-b;
});
无参:按照数组元素的首字符对应的Unicode编码值从小到大排列数组元素。
带参:必须为函数(回调函数--callback)。函数中带有两个参数,代表数组中的 前后元素。如果计算后(a-b),返回值为负数,a排b前面。等于0不动。返回值为正数,a排b后面。
indexOf()、lastIndexOf() //如果没找到返回-1(给元素查索引)
索引值 = 数组.indexOf/lastIndexOf(数组中的元素);
高级
迭代方法 不会修改原数组
every()、filter()、forEach()、map()、some()
数组/boolean/无 = 数组.every/filter/forEach/map/some(
function(element,index,arr){
程序和返回值;
}
);
//对数组中每一项运行以下函数,如果都返回true,every返回true,如果有一项返回false,则停止遍历 every返回false;不写默认返回false
var arr = array.every(function(item,index,arr){
})
//对数组中每一项运行以下函数,该函数返回结果是true的项组成的新数组
var arr = array.filter(function(item,index,arr) {
});
console.log(arr);
//遍历数组
var arr = array.forEach(function(item,index,arr){
});
//对数组中每一项运行以下函数,返回该函数的结果组成的新数组
var arr = array.map(function(item,index,arr) {
return "\"" + item +"\"";
})
//对数组中每一项运行以下函数,如果该函数对某一项返回true,则some返回true
var b = array.some(function(item,index,arr){
if (item == "ww") {
return true;
}
return false;
});
清空数组
var array = [1,2,3,4,5,6];
array.splice(0,array.length); //删除数组中所有项目
array.length = 0; //length属性可以赋值,其它语言中length是只读
array = []; //推荐
伪数组(储存传递给函数参数的内部数组):
arguments[]数组只在函数体内定义。在函数体内,arguments引用该函数的 Arguments对象。该对象有带编号的属性,并作为一个存放传递给函数的所有参数的数组。标识符arguments本质上是一个局部变量,在每个函数中都会被自动声明并初始化。它只在函数体中才能引用Arguments对象,在全局代码中没有定义。
属性arguments.callee引用当前正在运行的函数。
若有不足请多多指教!希望给您带来帮助!