数组
检测数组(返回布尔类型
a、 instanceof(); 检测是否是数组对象
console.log(arr instanceof Array) ;
b、 Array.isArray() ,H5新方法
查找元素所在的索引 indexOf()
arr.indexOf("要查看的元素"); 从前往后
arr.lastIndexOf(“要查找的元素”); 从后往前
返回索引位置,找到立即返回,一次查找一个。找不到则返回-1.
转换数组
a、 arr.toString(); 把数组变换成字符串 /需要一个新的变量接受返回值,不改变原数组,数组中的逗号也会被转换成新元素的值
b、 valueof(): 返回数组本身 数组本身 = 数组.valueOf();
join 连接数组
a) arr = arr.join() ;
b)把数组元素用 “连接符” (用“”标示出来的符号)连接成字符串
c)需要新变量来接收,不修改原数组
d)参数决定用什么连接
e)无参数默认用逗号连接
f)用空字符串“”可以无缝连接每个元素,用“ ”中间添加空格,即可使用空格隔开
var arr = ["虹猫","蓝兔","赵四"]; var str1 = arr.join(); var str2 = arr.join(" ");//如果用空格的话,那么元素之间会有一个空格 var str3 = arr.join("");//用空字符串,链接元素,无缝连接 var str4 = arr.join("&");
argument、伪数组
a、只在函数中使用,实参的数组
b、伪数组,不能修改数组长度
c、允许修改值,长短不可修改
fn(1,2,3,4); function fn(a,b){ arguments[0]= "我已经把1替换为了我"; console.log(arguments); //输出此数组 console.log(fn.length); // 形参的个数 console.log(arguments.length); // 输出此数组的实参个数 // arguments.push("此处将输出错误,"); console.log(arguments instanceof Array); // 将输出false // console.log(arguments.callee); // 打印出整个函数 包括注释 }
栈操作 -- 先进后出
arr = arr.push; 在最后面插入/返回数组的长度/可以插入数组
arr = arr.pop; 去除最后一项/返回减去的这个元素
队列操作 -- 先进先出
arr = arr.shift ; 删除第一个数组的元素,返回被删除的元素;
arr = arr.unshift ; 在第一个数组元素前添加一个元素,返回新数组的长度;
反转、排序 方法
arr = arr.reverse() ; 反转数组,返回新数组,但是原数组也会被修改 [rɪ'vɜːs]
arr = arr.soft() ; 将数组排序,默认为按照首字母的unicode编码值排列,返回的新数组元素会从小到大排。
回调函数可以实现按你设置的规则排列
var arr = [1,21,15,2,3,4,5]; console.log(arr.sort(function(a,b){ return a-b; //设置规则 正序, 底层是arr[a] - arr[a+1] > 0 ; 然后将其互换 return b-a; // 倒序 }));
console.log( "b".charCodeAt()); //获取元素的unicode编码
arr = arr.concat(arr2); concat 合并数组
var arr1 = ["a","b","c"]; var arr2 = [111,22,3]; var arr3 = arr1.concat(arr2);
arr = arr.slice(开始的位置 ,结束的位置) 截取数组元素,给予负值是从尾部开始截取
需注意,结束的位置,指的是第几个元素,而不是取几个位置;
ar = arr.splice(开始截取的位置,截取的数量,弥补的值); 弥补的值可以是元素,也可是数组
若放数组,则会把数组整体放入 形成二维数组 || 截取的值是从第几个元素后边开始
不写弥补的值,则原数组会被删减/可使截取的数量为0,弥补的值即可自我调配
var arr=[0,1,2,3,4,5,6,7,8,9]; var ar = arr.splice(3,3,"a","b","c"); alert(ar); // [3,4,5] alert(arr); // [0,1,2,3,a,b,c,7,8,9]
// 删除数组中大于2000的数
var arr = [1500,1200,2000,2100,1800,2222,3333,1111,221];
fn(arr);
function fn(){
for(i=0;i<arr.length;i++){
if(arr[i]>=2000){
arr.splice(i,1);
alert(arr);
i =i-1;
}
}
}
数组遍历的方法 ,对数组元素进行某项操作
a) arr.every( function ( item,index, arr){ } ) ;
1.返回一个boolean值,参数是回调函数
2.对每个数组元素都进行如下函数
3.若有一项返回false则every返回false并在返回false后停止运行
1 var arr=[0,1,2,3,4,"我是第6个元素5",6,7,8,9]; 2 3 var bool = arr.every(function(item,index,array){ 4 // item = "abc"; // 每个元素都在取出后被替换为abc 5 // array[index] ="abc"; //数组的元素直接被替换为abc 6 // 7 // console.log(item); 8 // console.log(index); 9 // console.log(array); 10 if(item.length>2){ 11 return false; 12 } 13 return true; 14 }); 15 alert( bool);
b) arr.some(function(element,index,array){ } ) ;
1.有一项返回true 则返回true;
2.返回true函数停止运行。
c) arr.filter(function(element,index,array){ } ) ;
返回一个新数组 ;
d) arr.forEach(function(element,index,array){ } ) ;
遍历数组(无返回值,为数组中的元素都执行某个函数);无法停止!!
1 var arr=[0,1,2,3, ,"我是第6个元素5",6,7,8,9]; 2 3 function logArrayElements(element, index, array) { 4 console.log("a[" + index + "] = " + element); 5 } 6 7 arr.forEach(logArrayElements);
e) arr.map(function(element,index,array){ } ) ; 对元素进行函数运算,每个返回的值组成一个新的数组。
清空数组
一、 arr.splice(0);
二、 arr.length = 0; // 伪数组不适用
三、 arr = [ ] ; // 重新赋值
测试数组中的重复元素次数
//测试数组中的重复元素次数 var arr = ["亚洲","气质舞王","尼古拉斯","赵四","亚洲",22,22,22,22,22]; fn(arr); function fn(arr){ var len=[]; // 用来计数 var ar = new Array(); // 用来收藏arr都有哪几种元素 // 外循环控制轮数 for (i=0;i<arr.length;i++){ // 若新数组ar里没有arr的元素 if(arr[i] !== ar[ar.length]) { // 就把此元素储存到ar中 ar[ar.length] = arr[i]; len[i] = 0; // 初始化数组元素,否则将显示NAN // 将每个arr数组元素都与组装的数组ar比较 for(y=0; y<arr.length;y++){ if (arr[y] == ar[i]){ // 相等则计数器加1 len[i] += 1 ; } } console.log("元素arr["+ar[i]+"]出现的次数是"+len[i]) } } }