push()

该方法可以该方法可以向数组的末尾添加一个或多个元素,并返回数组的新长度。

var arr=["孙悟空","猪八戒","沙和尚"];
arr.push("唐僧","白骨精","蜘蛛精");
console.log(arr.push());

pop()

删除数组最后一个元素,并返回被删除的元素

var arr=["孙悟空","猪八戒","沙和尚"];
result=arr.pop();
console.log(result);

unshift()

该方法可以向数组的开头添加一个或多个元素,并返回数组的新长度

var arr=["孙悟空","猪八戒","沙和尚"];
arr.unshift("玉帝","二郎神");
console.log(arr);

shift()

删除数组第一个元素,并将删除的元素返回

var arr=["孙悟空","猪八戒","沙和尚"];
m=arr.shift();
console.log(m);
console.log(arr);

forEach()

forEach()该方法只支持ie8以上(不包括ie8)的浏览器,用来遍历数组,该方法需要一个函数来作为参数。像这种函数由我们创建但不由我们调用则称为回调函数。数组中有几个元素就会执行几次函数,每次执行时,浏览器都会将遍历到的元素以实参的形式传递进来。
我们可以定义形参来读取这些内容 ,浏览器会在回调函数传递三个参数。

  • 第一个就是数组元素的值value
  • 第二个就是就是数组的元素的索引index
  • 第三个就是数组全部的元素array
var arr=["书八戒","孙悟空","唐僧"];
arr.forEach(function(value,index,obj)
{

console.log(value);
console.log(index);
console.log(obj);
}
            
);

slice()

可用来从数组中截取指定元素,该方法不会改变原数组,而是把截取到得数组元素封装到一个新数组返回。
参数:

  • 第一个截取开始位置的索引,包括开始索引
  • 第二个截取结束位置的索引,不包括结束索引(第二个索引可以不写,表示从开始索引到最后都输出)

    索引还可传递负值,如果传递一个负值,则从后往前计算,-1表示倒数第一个,-2表示倒数第二个

    var arr=["孙悟空","猪八戒","唐僧","沙和尚"];
    var result=arr.slice(1,3);
    console.log(result); 

splice()

可用于删除数组中的指定元素,该函数会影响到原数组,会将删除的元素作为返回值。
参数:

  • 第一个参数表示开始位置的索引
  • 第二个表示删除的数量
  • 第三个及以后,可以传递一些新的元素,这些元素将自动插入到删除元素索引前边
var arr=["孙悟空","猪八戒","唐僧","沙和尚"];
var result=arr.splice(1,0,"牛魔王","红孩儿"); 
console.log(result);
console.log(arr);

练习:数组去除

var arr=[1,2,3,2,2,1,3,4,4,2,5,4,5,8,78,56,4];
for(var i=0;i<arr.lenght;i++)
 {
   for(var j=i+1;j<arr.lenght;)
    {
      if(arr[i]==arr[j])
       {
         arr.splice(j,1);
       } 
       else
         j++;    
    }
  }
console.log(arr);

concat()

可合并连接多个数组并返回,该方法不会对原数组产生影响。

var arr=[5,7,1,2,3,4,5,6];
var arr2=[7,8,9];
var arr3=[78,56,78,52];
//也可在后面加元素,也都会连在一起
arr=arr.concat(arr2,arr3,"元素1","元素2");
console.log(arr);

join()

可以将数组转换为字符串,不会对原数组产生影响,而是将转换后的字符串作为结果返回。该函数还可指定一个参数,比如一个字符串来代替数组的连接符。

var arr=[5,7,1,2,3,4,5,6];
//如果不想要连接符可以穿一个空串
var result=arr.join("");
console.log(result);
console.log(typeof result);

reverse()

反转数组,对原数组有影响,会直接修改函数。

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

sort()

语法:arr.sort(compareFunction)
该函数作用是对数组排序,默认按照Unicode编码来排序,而且会影响到原数组。
我们可以制定自己的排序规则,就是添加一个回调函数来作为排序的规则(compareFunction)。

如果我们没有指定这个函数,那么元素会按照转换为的字符串的逐个字符的Unicode编码进行排序。比如:"Banana" 会被排列到 "cherry" 之前,原本数字之间比较大小是2出现在10之前(升序),但是这里比较时数字会先被转换为字符串,再逐个比较Uicode编码,所以 "10" 比 "2" 要靠前。
如果我们指明了这个回调函数函数,回调函数中我们定义两个形参,浏览器会分别使用数组中的元素作为实参去调用回调函数。使用哪些元素调用不确定,但是肯定的是在数组中a一定在b前边。浏览器会根据回调函数的返回值来决定元素的顺序

  • 如果返回一个大于0的一个值,则元素会交换位置
  • 如果返回一个小于或者等于0的一个值则元素的位置不变


代码演示:

var arr4=[4,5,1,7,2,4,1,6,5,8,7,9];
arr4.sort(function(a,b)
{
  //前边的大
      /*
      if(a>b)
      {
       return 1;
      }
      else if(a<b)
      {
       return -1;
      }
      else
           return 0;
   //要是想降序就把1改为-1,-1改为1返回
               */
                   
  //简化写法如下
  //升序
      //return a-b;
  //降序
  return b-a;
}
);
          
console.log(arr4);

其实如果你输出a和b的值你会发现利用sort()内部是利用递归进行冒泡排序的。最后,永远要记住一句话,凡是返回1或者大于0的正数的时候就要交换位置。(内部实现)

Last modification:April 5, 2020
如果觉得我的文章对你有用,请随意赞赏