js数组方法及使用

数组的方法

检测是否为数组:
① instanceof Array
②Array.isArray(参数) 判断传入的参数是否是数组 IE9以上版本支持 优先于instanceof

将数组转换为字符串

① toString
②join(分隔符)

var arr = [1,2,3]
console.log(arr.toString()) //1,2,3
console.log(arr.join('-')) //1-2-3

常用的数组方法

1、push() ,向数组的末尾添加一个或多个元素,并返回新的数组长度,改变原数组

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

2、pop(),用于从数组末尾删除元素,它会更改数组的长度。返回删除的元素,改变原数组

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

3、shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。改变原数组

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

4、unshift(),方法可向数组的开头添加一个或更多元素,并返回新的长度。该方法将改变数组的数目。

var arr = [1,2,3,4,5,6]
console.log(arr.unshift(-1,0)) //返回的是数组的长度 8
console.log(arr) // [-1, 0, 1, 2, 3, 4, 5, 6]

5、sort()方法用于对数组的元素进行排序。排序顺序可以是字母或数字,并按升序或降序。默认排序顺序为按字母升序。注意:当数字是按字母顺序排列时"40"将排在"5"前面。使用数字排序,你必须通过一个函数作为参数来调用。函数指定数字是按照升序还是降序排列。这些说起来可能很难理解,你可以通过本页底部实例进一步了解它。注意: 这种方法会改变原始数组!。

var arr= ["Banana", "Orange", "Apple", "Mango"];
arr.sort();// ['Apple', 'Banana', 'Mango', 'Orange']
console.log(arr); //['Apple', 'Banana', 'Mango', 'Orange']
var arr= [40,100,1,5,25,10];
arr.sort(); //[1, 10, 100, 25, 40, 5]
//这样排序的话就回出问题,所以一般会给sort()方法一个函数作为参数来调用
var arr= [40,100,1,5,25,10];
arr.sort(function(a,b){return a-b}); //[1, 5, 10, 25, 40, 100]
console.log(arr) ;//[1, 5, 10, 25, 40, 100]

6、reverse()方法用于颠倒数组中元素的顺序。该方法会改变原来的数组,而不会创建新的数组。

var arr= [40,100,1,5,25,10];
arr.sort(function(a,b){return a-b}); //[1, 5, 10, 25, 40, 100]
arr.reverse() //[100, 40, 25, 10, 5, 1]
var arr= ["Banana", "Orange", "Apple", "Mango"];
arr.reverse(); // ['Mango', 'Apple', 'Orange', 'Banana']
console.log(arr) ;//['Mango', 'Apple', 'Orange', 'Banana']

7、concat()方法用于连接两个或多个数组。

var arr= [1,2];
var arr1= [3,4,7];
var arr2= [9,8,3];
var newArr= arr.concat(arr1,arr2); //[1, 2, 3, 4, 7, 9, 8, 3]

8、slice()方法可从已有的数组中返回选定的元素。可传两个参数(非必传),第一个参数指定截取的位置,如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。

var arr= [40,100,1,5,25,10];
arr.slice(-3,-1) // [5,25]
arr.slice(3) // [5, 25, 10]
arr.slice(2,5) // [1, 5, 25]

9、splice()方法用于添加或删除数组中的元素。这种方法会改变原始数组。第一个参数必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组元素的下标,必须是数字。 可选。规定应该删除多少元素。必须是数字,但可以是 “0”。如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。可选。要添加到数组的新元素

var arr= [40,100,1,5,25,10];
arr.splice(4) //[25,10] //原数组已经改变 [40, 100, 1, 5]
arr.splice(4,1) //[25]//原数组已经改变 [40, 100, 1, 5,10]
arr.splice(0,9) //[40, 100, 1, 5, 25, 10]//原数组已经改变 []
arr.splice(2,1,'4','7') // [1] 返回被截取的元素,原数组已经改变 [40, 100, '4', '7', 5, 25, 10]

10、indexOf() 方法可返回数组中某个指定的元素位置。如果在数组中没找到指定元素则返回 -1。不会改变原数组

var arr= [40,100,1,5,25,10];
arr.indexOf(100) // 1
arr.indexOf(99) // -1

11、lastIndexOf()方法可返回一个指定的元素在数组中最后出现的位置,从该字符串的后面向前查找。如果要检索的元素没有出现,则该方法返回 -1。

var arr = ["Banana", "Orange", "Apple", "Mango"];
var a = arr .lastIndexOf("Apple");
console.log(a) // 2
var b = arr .lastIndexOf("O"); // -1

12、forEach()方法用于调用数组的每个元素,遍历数组,并将元素传递给回调函数。

var arr = [1, 2, 3, 4, 5];
arr.forEach(function (item) {
    if (item === 3) {
        return;
    }
    console.log(item);
});
// 1 
// 2
// 4
// 5

13、map()方法不会对空数组进行检测,方法不会改变原始数组。
array.map( function ( item, index, arr) {} )

必传:item:当前元素的值
var arr = [88,90,100,20,50]
var res = arr.map(item => item * 0.8)
console.log(res) // [70.4, 72, 80, 16, 40]
console.log(arr ) // [88,90,100,20,50]
index(可选):当前元素在数组中的索引值
var arr= [2, 4, 6, 8]
var newArr = arr.map((item, index) => item+ index) //2(item) + 0(index) , 4(item) + 1(index), 6(item) + 2(index), 8(item) + 3(index)
console.log(newArr) //[2, 5, 8, 11]

14、filter() 方法创建一个新数组,返回的是所有匹配元素组成
var newArray = arr.filter(callback(item, index, array))

let users = [
  {id: 1, name: "John"},
  {id: 2, name: "Pete"},
  {id: 3, name: "Mary"}
];
// 返回前两个用户的数组
let someUsers = users.filter(item => item.id < 3);
console.log(someUsers); //[{id: 1, name: "John"},  {id: 2, name: "Pete"},]

15、every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。使用指定函数检测数组中的所有元素,如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。如果所有元素都满足条件,则返回 true。对空数组检测 返回 true。不会改变原始数组。

16、some()会遍历数组中的每个元素,让每个值都执行一遍callback函数,如果有一个元素满足条件,返回true , 剩余的元素不会再执行检测。如果没有满足条件的元素,则返回false。

17、reduce()
18、reduceRight()

筛选数组

使用for循环,将需要的数组元素添加到新的数组中
var arr = [2,3,8,19,38,34,21,0,4,8];
var newArr = [];
var j = 0;
for (var i = 0 ; i <arr.length ; i++){
	if( arr[i] >= 30 ){
		newArr[j] = arr[i]
		j++
	}
}
或者 
for (var i = 0 ; i <arr.length ; i++){
	if( arr[i] >= 30 ){
		newArr[newArr.length] = arr[i]
	}
}
将原数组中的元素倒转着放进新数组:
for ( var i = arr.length-1; i >=0 ; i--){
	newArr[newArr.length] = arr[i]
}
利用for循环进行数组中元素冒泡排序
var arr= [5,4,3,2,1];
for (var i = 0 ; i <= arr.length - 1; i++) { 
	for(var j = 0; j <= arr.length - i - 1; j++){
        if(arr[j] > arr[j+1]){
            var temp = arr[j]
            arr[j] = arr[j+1]
            arr[j+1] = temp
        }
    }
}
console.log(arr)
console.log(newArr)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值