数组常用方法总结以及伪数组转真数组的方法

本文详细介绍了JavaScript数组的常见操作方法,如concat、slice、splice等,以及迭代方法如every、some、filter等的功能与用法。同时,讲解了如何检测数组及伪数组转换成真数组的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

###数组常用方法总结以及伪数组转真数组的方法

##1.数组的操作方法

*1. arrayObject.concat(arrayX,…,arrayX)

	用于连接两个或多个数组,基于当前数组,创建一个新的数组,并返回这个新数组,不会改变原数组。
	
	代码示例:
	var color1 = ["red","green","blue"];
		var color2 = color1.concat("yellow",["black","brown"]);
		console.log(color2);//打印的值为  ["red","green","blue","yellow","black","brown"]
		注意点:
			该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。
			如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。

*2. arrayObject.slice(startIndex,endIndex)

	获取数组的一个片段或者子数组返回,不会影响原数组。
	
	1)参数为一个整数,代表切割的起始位置,返回从该位置到数组末尾的所有元素的数组
		    如果第一个参数为负数,从右往左计算开始位置(从-1开始),从该位置截取到数组的末尾。
		2)参数为两个整数,获取从第一个参数开始,到第二个参数位置但是不包括第二个参数位置上的值。
		    如果第一个参数为负数,从右往左计算开始位置(从-1开始),从该位置截取到第二个参数计算的结束位置。
	
	代码示例:
	var arr = ["aa","bb","cc","dd"];
		1.接受一个参数时
		  var arr_new = arr.slice(1);// arr_new = ["bb", "cc", "dd"],arr 不改变
		
		2.接受两个参数时
		  var arr_new = arr.slice(1,2);	// arr_new = ["bb"]; arr不改变 

*3. arrayObject.splice(startIndex,count,ele1,ele2…)

	在原数组上进行插入或者删除数组元素,会影响原来的数组。
	
	1)1个参数,从该参数指定的位置开始删除,直到数组的末尾。
		2)2个参数,第一个参数表示删除的起始位置,第二个参数删除的个数
		3)2个以上,第一个参数表示删除的起始位置,第二个参数删除的个数,第三个元素以及之后元素表示插入的值
		返回值:删除的元素组成的新数组			
		代码示例:
		var arr = ["aa","bb","cc","dd"];
		1.删除
		  var arr1 = arr.splice(1,2);
		  
		  // arr = ["aa","dd"];	在原数组进行了删除操作
		  // arr1 = ["bb","cc"];返回删除的元素数组
		
		2.插入
		  var arr2 = arr.splice(1,0,"ee","ff");
		  
			// arr =  ["aa", "ee", "ff", "bb", "cc", "dd"] 将指定项插入到1位置处
			// arr2 = [], 返回空数组
			
		3.替换
		  var arr3 = arr.splice(1,2,"ee","ff");
		// arr =  ["aa", "ee", "ff", "dd"] 将"bb","cc" 替换成了"ee","ff"
		// arr3 = ["bb", "cc"], 返回删除的元素数组
		
*4. indexOf()和lastIndexOf()。
		这两个方法都接受两个参数:1.查询元素   2.开始查询元素的起始索引,使用全等操作符 ===,找不到该元素返回-1。
		indexOf()从数组的开头开始向后查找
		lastIndexOf()从数组的末尾开始向前查找。
		
		代码示例:
		var arr = [2, 9, 9]; 
		arr.indexOf(2); // 0 
		arr.indexOf(7); // -1			
		if (arr.indexOf(7) === -1) {
		   console.log("元素未找到");
		}	
	
	
*5. join()将数组中的所有元素连接成字符串,接受一个参数作为连接符号,默认是逗号,返回的结果是字符串。		
	
		代码示例:
		var arr = ['Wind', 'Rain', 'Fire'];			
		arr.join();    // 'Wind,Rain,Fire'			
		//如果写的是空字符串的话,那么就是中间什么符号都没有。
		arr.join("")   // 'WindRainFire' 			
		arr.join('-'); // 'Wind-Rain-Fire'

*6. sort()对数组中的元素进行排序

*7.reverse()反转数组中的元素顺序		

##2.数组的迭代方法:
Es5为数组定义了5个迭代方法,这些方法都不会修改数组中包含的值。
每个方法接受两个参数,1.在每一项上运行的回调函数fn 2.运行回调函数时回调函数的this指向的对象,这个参数可以省略。
回调函数中会接收三个参数: 1.数组项的值 2.该项在数组中的位置 3.数组对象本身(item,index,array)。

*1.every();对数组中的每一运行给定的函数,如果该函数对每一项都返回true,则返回true。
 代码示例:
  var arr = [11,5,23,7,4,1,9,1];
	var result = arr.every(function(item,index,arr){
		return item >2;
	});
	console.log(result); //false
	
*2.some();对数组中的每一运行给定的函数,如果该函数对任意一项都返回true,则返回true。
    代码示例:
var result = arr.some(function(item,index,arr){
		return item > 2;
	});
	console.log(result); //true
	
*3.filter();对数组中的每一运行给定的函数,会返回满足该函数的项组成的数组。
   代码示例:
var result = arr.filter(function(item,index,arr){
		return item >2;
	});
	console.log(result); // [11, 5, 23, 7, 4, 9]
	

*4.map();对数组中的每一运行给定的函数,返回每次函数调用的结果组成的数组。
   代码示例:
var result = arr.map(function(item,index,arr){
		return item * 2;
	});
	console.log(result); // [22, 10, 46, 14, 8, 2, 18, 2]
	
*5.forEach();对数组中的每一运行给定的函数,没有返回值,常用来遍历元素
   代码示例:
var result = arr.forEach(function(item,index,arr){
		console.log(item);
	});


*6.reduce()  x 是上一次计算过的值, 第一次循环的时候是数组中的第1个元素
               y 是数组中的每个元素, 第一次循环的时候是数组的第2个元素			
	
		代码示例:
		let array = [1, 2, 3, 4];

            let temp = array.reduce((x, y) => {
            
              console.log("x": x);
            
              console.log("y": y);
            
              return x + y;
            
            });
            
            console.log(temp);  // 10
            
            console.log(array);  // [1, 2, 3, 4]
	
对迭代方法的总结:
    以上6个方法IE9及以上才支持。
    以上均不改变原数组。
    some、every返回true、false。
    map、filter返回一个新数组。
    reduce让数组的前后两项进行某种计算,返回最终操作的结果。
    forEach 无返回值。

##3.检测是否是数组 Array.isArray(数组名称)
代码示例:
var arr = [1,2];
console.log(Array.isArray(arr));//打印的值为 true

##4.
push() 可接受任意类型的参数,将它们逐个添加到数组的末尾,并返回数组的长度
pop() 从数组的末尾移除最后一项,减少数组的length值,返回移除的项
shift() 移除数组中的第一个项并且返回该项,同时将数组的长度减一。
unshift() 在数组的前端添加任意个项,并返回新数组的长度。

##5伪数组转化成真数组

ES6 :Array.from(lis)
原生:Array.protoType.slice.call(lis)
slice是数组的截取子数组的方法,上面相当于lis.slice(),不传参数时相当于返回真数组,内容不变。但是伪数组不存在slice方法,所以通过方法.call的形式传给lis

### JavaScript 中数组常用方法 #### 栈方法 `push()` 方法数组的末尾添加一个或更多元素,并返回新的长度。 ```javascript let stack = []; stack.push(1); // 返回 1 console.log(stack); // 输出: [1] ``` `pop()` 方法删除并返回数组的最后一个元素[^1]。 ```javascript let stack = [1]; stack.pop(); // 返回 1 console.log(stack); // 输出: [] ``` #### 队列方法 除了 `push()` 外,还有 `shift()` 和 `unshift()`。`shift()` 删除并返回第一个元素;`unshift()` 向数组前端添加一个或多个元素,并返回新长度。 ```javascript let queue = []; queue.unshift(1); // 返回 1 console.log(queue); // 输出: [1] queue.shift(); // 返回 1 console.log(queue); // 输出: [] ``` #### 排序方法 `reverse()` 反数组项顺序。 ```javascript let arr = [1, 2, 3]; arr.reverse(); console.log(arr); // 输出: [3, 2, 1] ``` `sort()` 对数组元素进行排序,默认按字符串升序排列。可以传递比较函数来改变排序逻辑。 ```javascript let numbers = [7, 6, 8, 9]; numbers.sort((a, b) => a - b); console.log(numbers); // 输出: [6, 7, 8, 9] ``` ### 使用 Random 函数生成随机数组 为了创建一个包含随机数的数组,可利用循环结构结合 Math.random() 来填充目标数组: ```javascript function generateRandomArray(length, min, max){ let result = new Array(length).fill().map(() => Math.floor(Math.random() * (max - min + 1)) + min ); return result; } // 创建一个有五个介于0到10之间的整数构成的数组 let randomNumbers = generateRandomArray(5, 0, 10); console.log(randomNumbers); ``` 此代码片段展示了如何通过指定最小值 (`min`) 和最大值 (`max`) 的范围以及所需数组的大小 (`length`) 来构建一个由伪随机整数值组成的数组
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值