js数组操作方法总结

   1. consat():数组拼接的功能 ,返回新数组,原数组不受影响。

var arr1 = [1, 2, 3];
var arr2 = [4, 5, 6];
var result = arr1.concat(arr2);
console.log(result);// [1,2,3,4,5,6]
console.log(arr1);// [1, 2, 3]
console.log(arr2);// [4, 5, 6]

  2. join():将数组中所有元素都转化为字符串并连接在一起,返回新数组,原数组不受影响。

var arr = [1, 2, 3];
var result = arr.join();
//join()方法不带参数时默认以逗号为分隔符。
console.log(result);// 1,2,3

//也可以指定分隔符
var result = arr.join("-");
console.log(result);// 1-2-3

   3. reverse():将数组元素进行反转(前后换位置),返回新数组,原数组受影响。

var arr = [1, 2, 3];
var result = arr.reverse();
console.log(result);// [3, 2, 1]
console.log(arr);// [3, 2, 1]--原数组被影响

   4. sort():将数组元素进行排序,按照Unicode编码从大到小排序,返回新数组,原数组受影响。

(注意:默认情况下sort()方法没有传比较函数的话,默认按字母升序,如果不是元素不是字符串的话,会调用toString()方法将元素转化为字符串的Unicode(万国码)位点,然后再比较字符。所以用默认方法排序数据是有问题的。)

var arr = [20,10,2,1,3];
arr.sort();
console.log(arr);// [1, 10, 2, 20, 3]
arr.sort(function(a,b){
  return a-b;    //升序
}); 
console.log(arr);//[1, 2, 3, 10, 20]

arr.sort(function(a,b){
  return b-a;    //降序
}); 
console.log(arr);//[20,10,3,2,1]

   5. slice():截取数组生成新数组,返回新数组,原数组不受影响。

(注意:返回的数组包含第一个参数指定的位置和所有到但不含第二个参数指定位置之间的所有元素。如果为负数,表示相对于数组中最后一个元素的位置。如果只有一个参数,表示到数组末尾。)

var arr = [1,2,3,4,5,6];
console.log(arr.slice(2)); //[3,4,5,6]--从下标为2的位置开始截取到尾部
console.log(arr.slice(2,8)); //[3,4,5,6]--超过最大长度,只显示到最后结果
console.log(arr.slice(2,5)); //[3,4,5]--截取下标为2到下标为5之间数据,包含下标2但不包含下标5
console.log(arr.slice(2,-1)); //[3,4,5]--相对于倒数第一个之前
console.log(arr.slice(2,-2)); //[3,4]--相对于倒数第二个之前
console.log(arr.slice(3)); //[4,5,6]--一个参数从第三个到最后
console.log(arr.slice(-2));//[5,6]--一个参数负值从倒数第二个到最后

 6. splice():从数组中删除元素、插入元素到数组中或者同时完成这两种操作,返回新数组,原数组受影响。

(注意:第一个参数为指定插入或删除的起始位置,第二个参数为要删除的个数。之后的参数表示需要插入到数组中的元素 。如果只有一个参数,默认删除参数后边的所有元素。)

var arr = [1,2,3,4,5,6];
console.log(arr.splice(4)); //[5,6]--返回删除后的数组
console.log(arr); // [1,2,3,4]
console.log(arr.splice(2,2)); //[3,4]--从第二位起删除两个元素
console.log(arr);; //[1,2]
console.log(arr.splice(1,0,7,8)); //[]--从第一位起删除0个元素,添加7,8到原数组
console.log(arr);//[1,7,8,2]

 7. push():在数组末尾添加一个或多个元素,并返回新数组长度,原数组受影响。

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

 8.pop():从数组末尾删除1个元素(删且只删除1个), 并返回被删除的元素,原数组受影响。

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

9.shift():用于把数组的第一个元素从其中删除,并返回第一个元素的值,原数组受影响。

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

10.unshift():向数组的开头添加一个或更多元素,并返回新的长度,原数组受影响。

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

11.toString()和toLocaleString():将数组的每个元素转化为字符串,并且返回用逗号分隔的字符串,功能类似join(),原数组不受影响。

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

var arr1 = [1,2,3,4,5,6];
console.log(arr1.toLocaleString()); //1,2,3,4,5,6
console.log(arr1); //[1,2,3,4,5,6]

12.indexOf()和lastIndexOf():

indexOf() 方法有以下四种形式:

  • public int indexOf(int ch): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。

  • public int indexOf(int ch, int fromIndex): 返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。

  • int indexOf(String str): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。

  • int indexOf(String str, int fromIndex): 返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。

lastIndexOf() 方法有以下四种形式:

  • public int lastIndexOf(int ch): 返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。

  • public int lastIndexOf(int ch, int fromIndex): 返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索,如果此字符串中没有这样的字符,则返回 -1。

  • public int lastIndexOf(String str): 返回指定子字符串在此字符串中最右边出现处的索引,如果此字符串中没有这样的字符,则返回 -1。

  • public int lastIndexOf(String str, int fromIndex): 返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索,如果此字符串中没有这样的字符,则返回 -1。

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

var arrString = ['a','b','c','d','e','f'];
console.log(arrString.indexOf('c')); //2
console.log(arrString.indexOf('c',2)); //2
console.log(arrString); //['a','b','c','d','e','f']


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

var arrString = ['a','b','c','d','e','f'];
console.log(arrString.lastIndexOf('c')); //2
console.log(arrString.lastIndexOf('c',2)); //2
console.log(arrString); //['a','b','c','d','e','f']

13.sort():用于对数组的元素进行排序。排序顺序可以是字母或数字,并按升序或降序。默认排序顺序为按字母升序,原数组受影响。

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
console.log(fruits.sort()); //[ "Apple", "Banana", "Mango", "Orange" ]
console.log(fruits); //[ "Apple", "Banana", "Mango", "Orange" ]

var arr = [4,1,6,9,7,5];
console.log(arr.sort()); //[ 1, 4, 5, 6, 7, 9 ]
console.log(arr); //[ 1, 4, 5, 6, 7, 9 ]

 14.forEach():用于调用数组的每个元素,并将元素传递给回调函数,但对于空数组是不会执行回调函数的。

var arr = ["Banana", "Orange", "Apple", "Mango"];
arr.forEach(function(item,index){
  console.log(index+':'+item); 
  //0:Banana
  //1:Orange
  //2:Apple
  //3:Mango
});
console.log(arr); //[ "Banana", "Orange", "Apple", "Mango" ]

15.map():返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。按照原始数组元素顺序依次处理元素,不会对空数组进行检测,不会改变原始数组。

var arr = [2,3,4,5,6];
var newArr= arr.map(function(x){
  return x*x;
});
console.log(newArr); // [4, 9, 16, 25, 36]
console.log(arr); // [ 2, 3, 4, 5, 6 ]

16.filter() :创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。不会对空数组进行检测,不会改变原始数组。

var arr = [1,2,3,4,5,6,3,1];
var newArr = arr.filter(function(v,i,self){
  return self.indexOf(v) == i;
});
console.log(newArr); // [ 1, 2, 3, 4, 5, 6 ]
console.log(arr); // [ 1, 2, 3, 4, 5, 6, 3, 1 ]

17.every()和some():

every() 判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回true。
some() 判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true。

var arr = [1, 2, 3, 4, 5, 6];
console.log(arr.every(x=>x>0)); //true
console.log(arr.every(x=>x>5)); //false
console.log(arr.some(x=>x>5)); //true
console.log(arr); //[ 1, 2, 3, 4, 5, 6 ]

18.reduce()和reduceRight():

reduce() 两个参数:函数和递归的初始值。从数组的第一项开始,逐个遍历到最后。
reduceRight() 从数组的最后一项开始,向前遍历到第一项。

var arr = [1, 2, 3, 4, 5];
var result = arr.reduce(function(a,b){
  return a+b;
});
var result1 = arr.reduceRight(function(a,b){
  return a+b;
});
console.log(result); //15
console.log(result1); //15
console.log(arr); //[ 1, 2, 3, 4, 5 ]

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值