js数组常用方法总结

少看微博,多看博客!

一、首先创建数组

1.使用构造函数:

var arr = new Array();
var arr = new Array("a","b");

2.直接定义

var arr = ["a","b"];

二、常用方法

常用方法大概以下几种:splice(),slice(),join(),push(),pop(),shift() ,unshift(),sort(),reverse(),concat(),indexOf(), lastIndexOf() ,forEach() ,map() ,filter(),every() ,some() ,reduce()和 reduceRight()

1.最近用的比较多的就是splice(),对数组进行插入,删除或者替换。原来的数组会被改变!

语法:arr.splice(index,n,item)

index: 必需,整数,规定添加/删除项目的位置。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。

n: 必需。要删除的项目数量。如果设置为 0,则不会删除项目。

item: 可选,向数组添加的新项目

  • 插入元素:
  • var arr = ["a","b","c","d","e","f","g"];
  • 在c之前插入三个元素:
  • arr.splice(2,0,"1","2","3");
  • 此时数组 arr: [“a”, “b”, “1”, “2”, “3”, “c”, “d”, “e”, “f”, “g”];

  • 删除元素:
  • 想把arr=[“a”, “b”, “1”, “2”, “3”, “c”, “d”, “e”, “f”, “g”]; e后面的元素都删除,
  • arr.splice(7,3)
  • 此时:arr: [“a”, “b”, “1”, “2”, “3”, “c”, “d”];

  • 替换元素:
  • 比如把cd 替换成4,5,6如下:
  • arr.splice(5,2,"4","5","6")
  • 此时:数组arr :[“a”, “b”, “1”, “2”, “3”, “4”, “5”, “6”];

2. slice() 方法在数组中读取元素,不会改变原始数组

语法:arr.slice(start, end);

start:可选,开始位置;end:可选,终止位置.

var arr=["a", "b", "c", "d", "e", "f", "g"];
arr.slice(1,3);
//返回 ["b", "c"];
arr.slice(-3-1)//返回 ["e", "f"]

3.join() 方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。

arr.join(separator);

separator: 可选。分隔符,不写的话默认是逗号。

var arr=["a", "b", "c", "d", "e", "f", "g"];
arr.join();
//返回"a,b,c,d,e,f,g"
arr.join(";");
//返回"a;b;c;d;e;f;g"

4.push(),pop 和unshift()、shift()**

这两组同为对数组的操作,并且会改变数组的本身的长度及内容。
不同的是 push()、pop() 是从数组的尾部进行增减,unshift()、shift() 是从数组的头部进行增减。
//原数组长度为7
var arr=["a", "b", "c", "d", "e", "f", "g"];
arr.push("hi");
//返回 8
//此时 arr :["a", "b", "c", "d", "e", "f", "g", "hi"]
arr.pop()
//返回 "hi"
arr.push("j","k","l");
//返回 10
//此时 arr :["a", "b", "c", "d", "e", "f", "g", "j", "k", "l"]

可以看出,push,pop是从数组的尾部进行增减,且
push()向数组的 尾部 添加若干元素,并返回数组的新长度;
pop()从数组的 尾部删除1个元素(删且只删除1个),并返回被删除的元素;空数组是继续删除,不报错,但返回undefined;

//原数组长度为7
var arr=["a", "b", "c", "d", "e", "f", "g"];
arr.unshift("1","2");
//返回 9
//此时 arr :["1", "2", "a", "b", "c", "d", "e", "f", "g"]
arr.shift();
//返回 "1"
//此时 arr :["2", "a", "b", "c", "d", "e", "f", "g"]

unshift() shift() ,分别是从头部增加,删除元素,且unshift()向数组的 头部 添加若干元素,并返回数组的新长度;
shift()从数组的 头部删除1个元素(删且只删除1个),并返回被删除的元素;

5.concat()

concat() 方法用于连接两个或多个数组.返回一个新的数组。该方法不会改变现有的数组

var a=["a","b"];
var b=["c","d"];
var ab=a.concat(b);
//ab: ["a", "b", "c", "d"]
//a: ["a", "b"]
//b: ["c", "d"]

concat()和push区别在于concat()是先把原数组复制到一个新的数组,然后在新数组上进行操作。不会改变原有数组

6.sort() :用于对数组的元素进行排序。

语法:arrayObject.sort(sortby),sortby 必须是函数,规定排序顺序。
返回值:对数组的引用。数组在原数组上进行排序,不生成副本。即该方法会改变原数组。

(a-b输出从小到大排序,b-a输出从大到小排序);
$scope.mysortNum = function(a,b){
        return a - b
    }
    $scope.sortNum = function(){
        var a=["1","100","38","45","25","66"];
        a.sort($scope.mysortNum);
        document.write(a);
  //输出["1", "25", "38", "45", "66", "100"]
 }
$scope.mysortNum = function(a,b){
        return b - a
    }
 
    $scope.sortNum = function(){
        var a=["1","100","38","45","25","66"];
        a.sort($scope.mysortNum);
        document.write(a);
     //输出["100", "66", "45", "38", "25", "1"]
    }
 $scope.sortNum();

7. reverse() 用于颠倒数组中元素的顺序,会改变原来的数组,而不会创建新的数组。

var a=["a","b","c"]
a.reverse()
//返回结果 ["c", "b", "a"]
//返回结果 a: ["c", "b", "a"]

8. indexOf(item,start) 返回某个指定的字符串值在数组中-首-次出现的位置。

item: 必须。查找的元素。
start : 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到arr.length - 1。如省略该参数,则将从字符 串的首字符开始检索。
lastIndexOf : 返回字符串最后出现的位置。

var a=["a","b","c","a","mm","1"]
a.indexOf("a")
//返回 0
a.indexOf("c")
//返回2
a.lastIndexOf("a")
//返回3
a.indexOf("1")
//返回5
a.indexOf(1)
//返回-1

9. forEach()

[].forEach(function(value, index, array) {
  // ...
});

10. map() 通过指定函数处理数组的每个元素,并返回处理后的数组.map() 不会改变原始数组。

$scope.mapNum = function(){
        var b=[0,2,4,6,8];
        var c= b.map(function (val,index,arr) {
            return val / 2;
        },this);
        console.log(b);//返回 [0, 2, 4, 6, 8]
        console.log(c);//返回 [0, 1, 2, 3, 4]
        }
        
$scope.mapNum(); 

forEach和map() 的区别在于,forEach() 没有返回值。map 有返回值,可以return 出来。

11. filter() 检测数值元素,并返回符合条件所有元素的数组。 filter() 不会改变原始数组。

every() 检测数值元素的每个元素是否都符合条件。返回true/false。 every() 不会改变原始数组。

 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。

 如果所有元素都满足条件,则返回 true。

 some() 方法用于检测数组中的元素是否满足指定条件。返回true/false。some() 不会改变原始数组。

  如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。

  如果没有满足条件的元素,则返回false。
$scope.forNum = function(){
        var b=[0,2,9,6,10,1,66,12];
        var a = b.filter(function (val,index,arr) {
             return val >10;
        },this);
        console.log(a);
        //输出: [66, 12]
 
        var A = b.every(function (val,index,arr) {
            return val >10;
        },this);
        console.log(A);
    //输出:false
 
      var B = b.some(function (val,index,arr) { 
           return val >10;       
       },this);        
       console.log(B); 
      //输出:true
  }
   $scope.forNum();

12. reduce()和 reduceRight()

reduce() : 将数组元素计算为一个值(从左到右)。
reduceRight(): 将数组元素计算为一个值(从右到左)。

语法:

array.reduce(function(preValue, currentValue, currentIndex, arr){
}, initialValue)

function(preValue,currentValue, index,arr) :必需。用于执行每个数组元素的函数。

preValue: 必需。初始值, 或者计算结束后的返回值。如果向 reduce 方法提供 initialValue,则在首次调用函数时,previousValue 为 initialValue。

currentValue: 必需。当前元素

currentIndex: 可选。当前元素的索引

arr: 可选。当前元素所属的数组对象。

initialValue:可选。传递给函数的初始值

$scope.forNum = function(){
        var arr = [0,1,2,3,4];
        var sum= arr.reduce(function (preValue,curValue,index,array) {
            console.log(preValue,curValue);
            return preValue + curValue;
        }); // 10
        console.log(sum);
             //输出log分别为:1 2,3 3,6 4,10
 }
 $scope.forNum(); 
   $scope.forNum = function(){
    var arr = [0,1,2,3,4];
    var sum= arr.reduce(function (preValue,curValue,index,array) {
        console.log(preValue,curValue);
        return preValue + curValue;
    },10); // 20
    console.log(sum);
   //输出分别为:10 0,10 1,11 2,13 3,16 4,20
 }
$scope.forNum();
 $scope.forNum = function(){
        var arr = [0,1,2,3,4];
        var sum= arr.reduceRight(function (preValue,curValue,index,array) {
            console.log(preValue,curValue);
            return preValue + curValue;
        }); // 10
        console.log(sum);
        //输出分别为:4 3,7 2,9 1,10 0,10
    }
    $scope.forNum();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值