数组的方法 及 数组题目(遍历数组五个输出平均值,二维数组,每一个数增加30%返回,创建对象存储信息,存一个删一个,内容反转)

数组方法(数组是对象 属于引用类型)

ES5之前的方法(ES3)

push 该方法用于向数组的末尾增加一项
参数是数组的新成员
返回值 是数组的长度

			var arr = [1, 2, 3, 4, 5];
	        // 增加一项6
	         arr[5] = 6;
	        // 通过方法增加一项
	         var length = arr.push(6);
	         console.log(length);

pop 该方法用于从数组的末尾移除一项 并返回该项

			console.log(arr.pop());

unshift 该方法用于往数组的头部增加一项 并返回数组的长度

		console.log(arr.unshift(1000));

shift 该方法用于从数组的头部移除一项 并返回该项

		console.log(arr.shift());	

concat 连接 该方法的作用是给数组连接新成员
参数有任意个,都是会被拼接到新数组中的成员 如果参数中有数组 会把这个数组拆开
返回值是连接完毕的新数组,它不会改变原来的数组

		var arr = [1];
        var arr1 = [2, 3];
        // 把arr 和 arr1 连接起来
        var arr2 = arr.concat(10, 20, 33, arr1);
        console.log(arr2)

reverse 将一个数组逆序
返回值是原数组
会影响到原数组

		var arr = ["a", "b", "c", "d", "e"];
        var arr1 = arr.reverse();
        console.log(arr);
        console.log(arr1);
        console.log(arr === arr1);

sort方法 该方法只适用于内部成员都是数字的情况

		 var arr = [1, 11, 44, 4, 5, 67, 6, 78, 345, 89, 8];
        // 如果不传递参数 会按照第一位数的数字从小到大排序
         arr.sort();
        console.log(arr);

        // 如果传递参数 参数是一个函数 该函数有两个参数 a b 如果返回a - b 则升序排列 如果返回b - a则降序排列
         arr.sort(function(a, b) {
             return b - a;
         });
         console.log(arr);

join方法 该方法用于将数组以参数作为间隔转换成字符串
参数默认是 “,”

		var arr = [1, 2, 3, 4, 5, 6, 7, 8];
        console.log(arr.join("☆"));

slice(start, end) 该方法用于截取一段数组中的成员
start: 开始截取的下标位置
end: 结束截取的下标位置(不包含)
左闭右开:包含左侧 不包含右侧
可以接收一个参数 表示从start截取到最后
可以不接收参数 表示全部截取
参数可以是负数 表示从后往前数(负数是从-1开始)
如果第一个参数比第二个参数要大 截取的是空数组

			var arr = [1, 2, 3, 4, 5, 6, 7, 8];
	        var arr1 = arr.slice(2, 6); // [3, 4, 5, 6]
	        var arr2 = arr.slice(2);  // [3, 4, 5, 6, 7, 8]
	        var arr3 = arr.slice(); // [1, 2, 3, 4, 5, 6, 7, 8]
	        var arr4 = arr.slice(0, -1);  // [1, 2, 3, 4, 5, 6, 7];
	        var arr5 = arr.slice(-4, -1); // [5, 6, 7]
	        var arr6 = arr.slice(-4);  // [5, 6, 7, 8]

splice(pos, num, …) 该方法用于操作数组
pos: 表示操作数组的位置
num: 表示要删除几项
之后的每一个成员表示要向pos位置插入的成员

			var arr = [1, 2, 3, 4, 5, 6, 7, 8];
	       // 1 将3移除
	        var result = arr.splice(2, 1);
	        console.log(arr);
	        console.log(result);
	        //2 将3替换成9
	        var result = arr.splice(2, 1, 9);
	        console.log(arr);
	        console.log(result);
	        
	      //  3 在5前面插入5个1
	        var result = arr.splice(4, 0, 1, 1, 1, 1, 1);
	        console.log(arr);
	        console.log(result);
	
	        // 4 当都只传递1个参数时 默认从该位置往后都移除
	        var result = arr.splice(1);
	        console.log(arr);
	        console.log(result);

ES5的数组方法

forEach方法
forEach 用于循环 参数是一个函数 该函数会执行数组.length次
函数有3个参数
第一个参数是数组成员
第二个参数是数组成员的索引值
第三个参数是数组本身
该方法没有返回值

		var arr = [1,2,3,4,5,6,7,8,9];
		 for(var i=0;i<arr.length;i++){
			console.log(arr[i]);
		}
		console.log(i); //当循环结束后,在当前作用域中会增加一个变量i
		
		arr.forEach(function(value,index,self){
			console.log(value,index,self);
			return;
		});

数组的方法map
用于循环 参数是一个函数 该函数会执行数组.length次
函数有3个参数
第一个参数是数组成员
第二个参数是数组成员的索引值
第三个参数是数组本身
map方法的返回值是一个新数组 数组长度与原数组保持一致 数组的成员是参数函数的返回值

	var arr1 = arr.map(function(value,index,self){
			console.log(value);
			return value * 1.3;
		});
		console.log(arr1);

fill 用于填充数组
接收3个参数
第一个参数是 填充数
第二个参数是 填充的起始位置(可选)
第三个参数是 填充的结束位置(可选)

		//将数组的每一个成员都填充为0
	   arr.fill(0);
	   //将数组的从第二个开始往后都填充为0
	   arr.fill(0,1);
	   //将数组的从第二个开始到第四个填充为0
	   arr.fill(0,1,4);

some 该方法属于断言方法 用于判定数组中是否有存在符合某种条件的成员
接收一个函数作为参数
函数的第一个参数是成员
函数的第二个参数是索引
函数的第三个参数是数组本身
函数要有返回值 通常是符合某种条件的判定表达式
返回值是一个布尔值 只要有任何一个成员符合了函数的描述 就返回真 都不符合才返回假

	例:判定arr中是否有字符串
			法一:
		   var result = false;
		   for(var i = 0;i<arr.length;i++){
			   if(typeof arr[i] === "string"){
				   result = true;
				   break;
			   }
		   }
		   console.log(result); 

		 法二:
	   var result = arr.some(function(value,index,self){
		   console.log(value);
		   return typeof value === "string"
	   });
	   console.log(result);

every 该方法也是断言方法 用于判定数组中是否有存在符合某种条件的成员
接收一个函数作为参数
函数的第一个参数是成员
函数的第二个参数是索引
函数的第三个参数是数组本身
函数要有返回值 通常是符合某种条件的判定表达式
返回值是一个布尔值 只要有任何一个成员不符合函数的描述 就返回假 都符合才返回真

			var result = arr.every(function(value,index,self){
				return typeof value === "number";
			});
			console.log(result);

indexOf 用于查找数组中是否存在某一个成员
如果找得到就返回该成员的下标 如果找不到就返回 -1
第一个参数是要查找的成员
第二个参数是要查找的起始位置

			var index = arr.indexOf(5,4);
		   console.log(index); 
		    var arr1 = [];
		   var arr = [1,undefined,null,"str",arr1,{},function(){}];
		   var result = arr.indexOf(arr1);
		   console.log(result);//5 
		   
**注:indexOf方法比较时使用的是全等判定**

filter 该方法用于过滤 参数是函数
函数有三个参数
函数的第一个参数是成员
函数的第二个参数是索引
函数的第三个参数是数组本身
该函数返回一个条件表达式
返回值是符合参数函数条件表达式的成员组成的数组

			var arr1 = arr.filter(function(value,index,self){
			   return value %2===0;
		   });
		   console.log(arr1);

ES6的数组方法

find 用于查询数组中的成员 接收一个函数作为参数
函数有三个参数
函数的第一个参数是成员
函数的第二个参数是索引
函数的第三个参数是数组本身
该函数返回一个条件表达式
返回符合函数条件表达式描述的第一个数组成员 如果找不到 返回undefined

		 var arr = ["张三","李四","王五","赵六","田七"];
		var username = arr.find(function(value,index,self){
				return value.indexOf("五")!=-1;
		});
		console.log(username); //"王五"

findIndex 用于查询数组中的成员的索引 接收一个函数作为参数
函数有三个参数
函数的第一个参数是成员
函数的第二个参数是索引
函数的第三个参数是数组本身
该函数返回一个条件表达式
返回符合函数条件表达式描述的第一个数组成员的索引 如果找不到 返回 -1

		 var arr = ["张三","李四","王五","赵六","田七"];
		var username = arr.findIndex(function(value,index,self){
				return value.indexOf("五")!=-1;
		});
		console.log(username); //2 

copyWithin 负责数组的内部复制 接收三个参数
第一个表示操作位置
第二个表示复制的开始位置(包含)
第三个表示复制的结束位置(不包含)
操作结果: 从第二个参数开始复制到第三个参数 再将复制的成员 从第一个参数位置开始替换 */

			var arr = [1,2,3,4,5,6];
			arr.copyWithin(0,3,5);
			console.log(arr);//4 5 3 4 5 6 

Array.of 该方法用于定义数组

			 var arr = Array.of(5);//无论几个参数都是数组内容
			var arr1 = new Array(5);
			console.log(arr);
			console.log(arr1); 

Array.from 该方法用于将类数组对象 转为 数组
var lis = document.getElementsByTagName(“li”);
var arr = Array.from(lis); //(10) [li, li, li, li, li, li, li, li, li, li]
ES6之前的转换方式:[].slice.call(lis);

数组题目

  1. 定义一个含有30个整数元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中,并输出这个数组。试编程。var arr = [2, 4, 6, 8, …, 60]
  2.   function bianli(){
     		var arr = [];
     		for(var i=0;i<30;i++){
     			arr[i]=2*(i+1);	
     		}
     		return arr;
     	}
     	var arr = bianli();
     	var arr2 = [];
     	var sum = 0;
     	 for(var i=0;i<arr.length;i++){
     		 sum +=arr[i];
     		 if((i+1)%5===0){
     			 arr2.push(sum/5);
     			 sum = 0;
     		 }
     	 }
     	console.log(arr2); 
    

2.通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数试编程。

		var arr = [];
		var arr1 = [];
		for( var i=0;i<25;i++){
			arr.push(i+1);
			if((i+1)%5===0){
				arr1.push(arr);
				arr = [];
			}
		}
		console.log(arr1);

3.编写函数map(arr) 把数组中的每一位数字都增加30%,并返回一个新数组

		 function map(arr){
			 var arr1 = [];
			for(var i = 0;i<arr.length;i++){
				arr1[i] = arr[i] *(1.3);
			}
			return arr1;
		}
		var arr = [100,200,300,400,500];
		console.log(map(arr));

4.创建一个对象,该对象存储一个学生的信息,该对象包含学号、身份证、年龄、性别、所学专业等属性信息 并循环输出在控制台中 当循环结束之后 要求该对象为空对象(不能够有任何属性)

		var student = {
			id:"201611",
			idCard:"123456789123",
			age:30,
			sex:"女",
			zhuan:"计算机"
		}
		for( var i in student){
			console.log(student[i]);
			delete student[i];
		}
		console.log(student);

5.*/* 2. 反转函数请实现一个函数reverse,
该函数可以将一个数组内的内容反转 /

		 var arr = [1, 2, 3, 4, 5, 6]; 
		function reverse(arr){
			var arr1 = [];
			for(var i=arr.length-1;i>=0;i--){
				arr1.push(arr[i]);
			}
			return arr1;
		}
		var newArr = reverse(arr);
		console.log(newArr); 

版权声明:本文为qq_45675879原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。