JS数组的常用方法总结

本文深入探讨JavaScript中数组的基本概念、操作方法、位置方法、转换方法、栈方法、队列方法、重排序方法和相关核心API的用法,帮助开发者更高效地处理数组数据。
//【检测数组】
	
	//1.对于一个网页,或者一个全局作用域而言,使用instaceof操作符
	if(value instanceof Array){
		//todo...
	}
	
	//2.如果网页中包含多个框架,那实际上存在2个以上不同的全局执行环境
	//ECMAScipt5新增了 Array.isArray()方法,最终确定某个值到底是不是数组,而不管它在哪个全局执行环境中创建的
	if(Array.isArray(value)){
		//todo...
	}
	//支持Array.isArray()方法的浏览器有IE9+、Firefox 4+、Safari 5+、Opera 10.5+ 和Chrome
	
	//3.在尚未实现Array.isArray()方法的浏览器中准确的检测数组
	function isArray(value){
		return Object.prototype.toString.call(value) == "[object Array]";
	}

//【转换方法】
	
	//toLocaleString()、toString() 和 valueOf()
	//1.调用数组的 toString()方法会返回由数组中的每个值的字符串形式拼接而成的一个以逗号分隔的字符
	//而调用valueOf()返回的还是数组
	var colors = ["a","b","c"];
	alert(colors.toString()); 	//a,b,c
	alert(colors.valueOf());	//a,b,c	
	alert(colors);				//a,b,c
	
	//说明:由于alert()要接收字符串参数,所以它会在后台调用toString()方法,由此会得到与直接调用toString()方法相同的结果
	
	
	//2.使用join()方法,可以使用不同的分隔符来构建这个字符串
	var colors2 = ["aa","bb","cc"];
	alert(colors2.join(","));	//aa,bb,cc
	alert(colors2.join("-"))	//aa-bb-cc
	//【栈方法】
	//栈是一种后进先出的数据结构,也就是最新添加的项最早被移除。而栈中项的插入和移除,只发生在栈的顶部。
	
	//1.push()方法可以接受任意数量的参数,把它们逐个添加到数组的末尾,并返回数组修改后的长度
	var colors = new Array();	    		//创建一个数组
	var count = colors.push("red","green"); //推入2项
	alert(count);							//2	
	
	count = colors.push("black");			//推入另1项
	alert(count);							//3
	
	colors[3] = "blue";
	alert(colors.length);					//4
	
	//2.pop()方法,弹出数组末尾的一项
	var item = colors.pop();
	alert(item);							//"blue"
//【队列方法】
	//队列数据结构的访问规则是先进先出,在列表末端添加项,从列表前端移除项
	
	//1.shift(),移除数组中第一项并返回该项,同时将长度减1
	//结合使用shift()和push()方法,可以像使用队列一样使用数组
	var colors = new Array();
	var count = colors.push("red","green");	//推入2项
	alert(count);							//2
	
	count = colors.push("black");			//推入另一项
	alert(count);							//3
	
	var item = colors.shift();
	alert(item);							//"red"
	alert(colors.length);					//2
	
	
	//2.unshift(),在数组前端添加任意个项,并返回数组的长度
	var colors = new Array();
	colors.unshift("red","green");
	alert(colors);					 //"red","green"
	
	count = colors.unshift("black");
	alert(count);					 //3	
	
	var item = colors.pop();
	alert(item);					 //"black"	
	

//【重排序方法】
	
	//1.反转数组的顺序
	var values = [1,2,3,4,5];
	values.reverse();
	alert(values);	//5,4,3,2,1
	
	//2.sort()方法按升序排列数组项——即最小的值位于最前面,最大的值在最后面
	var values2 = [0,1,5,10,15];
	values2.sort();
	alert(values2);	//0,1,10,15,5
	
	/*sort()方法会调用每个数组元素的toString()转型方法,然后比较得到的字符串
	这种排序方式在很多情况下都不是最佳方案*/
	
	//3.sort()方法可以接收一个比较函数作为参数
	function sort_asc(v1,v2){
		if(v1 < v2){
			return -1;
		}else if(v1 > v2){
			return 1;
		}else{
			return 0;
		}
	}
	
	values2.sort(sort_asc);
	alert(values2);	//0,1,5,10,15
	
	function sort_desc(v1,v2){
		if(v1 < v2){
			return 1;
		}else if(v1 > v2){
			return -1;
		}else{
			return 0;
		}
	}
	
	values2.sort(sort_asc);
	alert(values2);	//15,10,5,1,0
	
	//对于数值类型或者其valueOf()方法返回数组类型的对象类型
	function compare(v1,v2){
		return v2 - v1;
	}
//【操作方法】
	
	//1.concat()方法,可以基于当前数组中的所有项创建一个新数组
	var colors = ["red","green","blue"];
	var colors2 = colors.concat("yellow",["black","brown"]);
	alert(colors2); //red,green,blue,yellow,black,brown
	
	//2.截取数组
	var colors = ["red","green","blue","yellow","purple"];
	var colors2 = colors.slice(1);	//green,blue,yellow,purple
	var colors3 = colors.slice(1,4);//green,blue,yellow
	
	//3.删除
	var array = ["red","green","blue"];
	var removed = array.splice(0,1);			//删除第一项
	alert(array);//green,blue
	alert(removed);//red
	
	//4.添加
	removed = array.splice(1,0,"yellow","orange"); //从位置1开发插入2项
	alert(array); //green,blue,yellow,orange
	alert(removed); //返回一个空数组
	
	//5.替换
	removed = array.splice(1,1,"red","purple"); 	//插入两项,删除一项
	alert(array);	//green,red,purple,orange,blue
	alert(removed); //yellow
//【位置方法】
	
	//1.查找某某项在数组中的位置
	var numbers = [1,2,3,4,5,4,3,2,1];
	alert(numbers.indexOf(4));		//3
	alert(numbers.lastIndexOf(4));  //5
	
	alert(numbers.indexOf(4,4));	//5 参数(查找项,查找起点位置索引)
	
	var person = {name:"jack"};
	var people = [{name:"jack"}];
	var morePeople = [person];
	
	alert(people.indexOf(person));	//-1
	alert(morePeople.indexOf(person)); //0
	
	/*indexOf()和lastIndexOf()方法不支持IE9以下*/





在 JavaScript 中,数组是一种非常重要的数据结构,广泛用于存储和操作一组数据。JavaScript 提供了许多内置的数组方法,这些方法可以帮助开发者高效地处理数组。以下是 JavaScript 中常用数组方法总结及其作用: ### 1. `forEach()` `forEach()` 方法用于对数组中的每个元素执行一次提供的函数。该方法不会返回任何值,并且不会改变原数组。 ```javascript var list = [32, 93, 77, 53, 38, 87]; var sum = 0; list.forEach(function (item) { console.log(item); sum += item; }); console.log(sum); // 输出数组元素的总和 ``` ### 2. `concat()` `concat()` 方法用于合并两个或多个数组。该方法不会修改现有数组,而是返回一个新的数组作为合并后的结果。 ```javascript var arr = ["George", "John", "Thomas"]; var arr2 = ["James", "Adrew", "Martin"]; var arr3 = ["William", "Franklin"]; var combinedArr = arr.concat(arr2, arr3); console.log(combinedArr); // ["George", "John", "Thomas", "James", "Adrew", "Martin", "William", "Franklin"] ``` ### 3. `join()` `join()` 方法用于将数组中的所有元素连接成一个字符串。可以指定一个分隔符作为参数,如果不提供,默认使用逗号 `,`。 ```javascript var arr = ["apple", "banana", "orange"]; var result = arr.join(" - "); console.log(result); // "apple - banana - orange" ``` ### 4. `reduce()` 和 `reduceRight()` `reduce()` 方法用于对数组中的每个元素执行一个累加函数,最终将数组缩减为一个单一的值。`reduceRight()` 的作用类似,但处理顺序是从右到左。 ```javascript let arr = [1, 2, 3, 4]; let sum = arr.reduce((acc, item) => acc + item, 0); console.log(sum); // 输出 10 let sumRight = arr.reduceRight((acc, item) => acc + item, 0); console.log(sumRight); // 输出 10 ``` ### 5. `indexOf()` `indexOf()` 方法用于查找数组中某个元素的索引值。如果找到该元素,则返回其索引;如果未找到,则返回 `-1`。 ```javascript let arr = ["apple", "banana", "orange"]; let index = arr.indexOf("banana"); console.log(index); // 输出 1 ``` ### 6. `map()` `map()` 方法用于创建一个新数组,其结果是对原数组中的每个元素执行一次提供的函数。 ```javascript let arr = [1, 2, 3, 4]; let squared = arr.map(x => x * x); console.log(squared); // [1, 4, 9, 16] ``` ### 7. `filter()` `filter()` 方法用于创建一个新数组,其中包含所有通过测试的元素。 ```javascript let arr = [10, 20, 30, 40, 50]; let filtered = arr.filter(x => x > 25); console.log(filtered); // [30, 40, 50] ``` ### 8. `find()` 和 `findIndex()` `find()` 方法用于返回数组中满足提供的测试函数的第一个元素的值。如果没有找到符合条件的元素,则返回 `undefined`。`findIndex()` 则返回符合条件的元素的索引,如果没有找到,则返回 `-1`。 ```javascript let arr = [5, 10, 15, 20]; let found = arr.find(x => x > 12); console.log(found); // 15 let index = arr.findIndex(x => x > 12); console.log(index); // 2 ``` ### 9. `slice()` `slice()` 方法用于返回数组的一部分,从起始索引开始,到结束索引(不包含结束索引)结束。该方法不会修改原数组。 ```javascript let arr = ["apple", "banana", "orange", "grape"]; let sliced = arr.slice(1, 3); console.log(sliced); // ["banana", "orange"] ``` ### 10. `splice()` `splice()` 方法用于修改数组内容,可以删除或添加元素。该方法会直接修改原数组。 ```javascript let arr = ["apple", "banana", "orange"]; arr.splice(1, 1, "grape"); console.log(arr); // ["apple", "grape", "orange"] ``` ### 11. `sort()` `sort()` 方法用于对数组元素进行排序。默认情况下,排序是按照字符串的 Unicode 码点进行的。可以通过提供一个比较函数来实现自定义排序。 ```javascript let arr = [10, 5, 8, 12]; arr.sort((a, b) => a - b); console.log(arr); // [5, 8, 10, 12] ``` ### 12. `reverse()` `reverse()` 方法用于反转数组元素的顺序。该方法会直接修改原数组。 ```javascript let arr = [1, 2, 3, 4]; arr.reverse(); console.log(arr); // [4, 3, 2, 1] ``` ### 13. `includes()` `includes()` 方法用于判断数组是否包含某个特定的元素。如果包含,则返回 `true`;否则返回 `false`。 ```javascript let arr = ["apple", "banana", "orange"]; console.log(arr.includes("banana")); // true ``` ### 14. `some()` 和 `every()` `some()` 方法用于测试数组中是否有至少一个元素满足提供的测试函数。如果有,则返回 `true`;否则返回 `false`。`every()` 方法用于测试数组中所有元素是否都满足提供的测试函数。如果全部满足,则返回 `true`;否则返回 `false`。 ```javascript let arr = [5, 10, 15, 20]; console.log(arr.some(x => x > 12)); // true console.log(arr.every(x => x > 3)); // true ``` ### 15. `push()` 和 `pop()` `push()` 方法用于向数组末尾添加一个或多个元素,并返回新的长度。`pop()` 方法用于删除数组的最后一个元素,并返回该元素。 ```javascript let arr = ["apple", "banana"]; arr.push("orange"); console.log(arr); // ["apple", "banana", "orange"] let last = arr.pop(); console.log(last); // "orange" console.log(arr); // ["apple", "banana"] ``` ### 16. `shift()` 和 `unshift()` `shift()` 方法用于删除数组的第一个元素,并返回该元素。`unshift()` 方法用于向数组开头添加一个或多个元素,并返回新的长度。 ```javascript let arr = ["apple", "banana", "orange"]; let first = arr.shift(); console.log(first); // "apple" console.log(arr); // ["banana", "orange"] arr.unshift("grape", "apple"); console.log(arr); // ["grape", "apple", "banana", "orange"] ``` ### 17. `fill()` `fill()` 方法用于将数组中的所有元素替换为指定的值。 ```javascript let arr = [1, 2, 3, 4]; arr.fill(0); console.log(arr); // [0, 0, 0, 0] ``` ### 18. `copyWithin()` `copyWithin()` 方法用于将数组中的一部分复制到数组中的另一个位置,并返回修改后的数组。 ```javascript let arr = [1, 2, 3, 4, 5]; arr.copyWithin(0, 3); console.log(arr); // [4, 5, 3, 4, 5] ``` ### 19. `flat()` 和 `flatMap()` `flat()` 方法用于将多维数组“拉平”,变成一维数组。`flatMap()` 方法首先对数组中的每个元素应用一个映射函数,然后将结果“拉平”。 ```javascript let arr = [1, [2, [3, 4], 5]]; console.log(arr.flat()); // [1, 2, 3, 4, 5] let result = arr.flatMap(x => (Array.isArray(x) ? x : [x * 2])); console.log(result); // [2, 2, 3, 4, 10] ``` ### 20. `entries()`, `keys()`, 和 `values()` 这些方法用于遍历数组。`entries()` 返回一个包含数组键值对的迭代器,`keys()` 返回一个包含数组索引的迭代器,`values()` 返回一个包含数组元素的迭代器。 ```javascript let arr = ["apple", "banana", "orange"]; let iterator = arr.entries(); console.log(iterator.next().value); // [0, "apple"] console.log(iterator.next().value); // [1, "banana"] console.log(iterator.next().value); // [2, "orange"] ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值