JavaScript——数组的常用方法

目录

任务描述

相关知识

查找元素的位置

数组的合并

数组倒置

元素合并

元素排序

提取子数组

编程要求

任务描述

本关任务:掌握数组的常用方法。

相关知识

本关将介绍一些数组常用的方法,你可以通过调用这些方法生成复杂的代码。

查找元素的位置

根据值查找元素的位置,有两个方法:indexOf()lastIndexOf(),前者从索引小处往大搜索,后者相反。都返回第一次遇到该元素时的索引。

两者都有两个参数,第一个参数为要查找的元素,第二个参数可选,为搜索的起点索引。如:

var search = ["a","b","a","b","c","d","a","a","b","a"];
console.log(search.indexOf("a"));//输出0
console.log(search.lastIndexOf("a"));//输出9
console.log(search.indexOf("a",2));//输出2,从索引为2处开始搜索

 第二个参数可以是负数,-1表示倒数第一个元素,-2表示倒数第二个元素,依次类推。如:

var search = ["a","b","a","b"];
console.log(search.indexOf("a",-3));//输出2
console.log(search.lastIndexOf("a",-3));//输出0

数组的合并

concat()实现数组合并,其形式是数组a.concat(数组b),合并之后返回新数组,新数组为数组a后面连接数组b,但是数组ab不变。

var a = [1,2,3];
var b = [4,5,6];
var c = a.concat(b);//合并后返回新数组
console.log(c);//输出[1,2,3,4,5,6]

数组倒置

reverse()实现数组倒置,无参数,返回倒置后的数组,同时调用该方法的数组也会被倒置。称为就地逆置。

var a = [1,2,3,4];
var b = a.reverse();
console.log(a);//输出[4,3,2,1]
console.log(b);//输出[4,3,2,1]

元素合并

join()将数组的所有元素连接起来组成字符串,参数为元素之间的分隔符,默认逗号。

var sArray = ["June","July","August"];
console.log(sArray.join());//输出June,July,August
console.log(sArray.join("+"));//输出June+July+August

元素排序

sort()实现数据元素排序,不带该参数表示元素按照ASCII表从小到大排序。如:

var stringArray = ["a","ab","b","aa"];
stringArray.sort();
console.log(stringArray);//输出["a","aa","ab","b"]

需要注意的是数字的排序,例子如下:

var arr = [1,2,10,5,12];
arr.sort();
console.log(arr);//输出[1,10,12,2,5];

带参数的格式如下:

arr.sort(function(a,b){
            return a-b;  //升序排列
})

或者:

arr.sort(function(a,b){
            return b-a;  //降序排列
})

说明:

  • arr是要排序的数组;
  • ab是两个参数,返回a-b,升序排列,返回b-a,降序排列。

对于数字的排序,sort()带参数和不带参数是不一样的,例子如下:

var arr = [1,2,10,5,12];
arr.sort();
console.log(arr);//输出[1,10,12,2,5]
arr.sort(function(a,b){
     return a-b;
});
console.log(arr);//输出[1,2,5,10,12]

提取子数组

slice()返回切割出的子数组,不修改原来的数组。

它有两个整数参数aba表示切割的起点,该点属于子数组;b可选,表示切割的终点,该点不属于子数组。

ab都可以为负数,如-1表示倒数第一个位置,依次类推。

var arr = ["a","b","c","d","e"];
console.log(arr.slice(0,3));//["a","b","c"]
console.log(arr.slice(0,-2));//["a","b","c"]
console.log(arr.slice(4));//["e"]
console.log(arr.slice(-4));//["b","c","d","e"]

编程要求

本关的编程任务是补全右侧代码片段中beginend中间的代码,具体要求如下:

  • 获取字符串a在数组myArray的所有位置并组成一个位置数组;

  • 获取字符串b在数组myArray的所有位置并组成一个位置数组;

  • 合并这两个数组然后返回合并后的数组。

    function mainJs(myArray) {
        myArray = myArray.split(",");
        //请在此处编写代码
        /*********begin*********/
        var arr = new Array();
        var brr = new Array();
        for (var i = 0; i < myArray.length; i++){
            if (myArray[i] == "a") {
                arr.push(i);
            }
            if (myArray[i] == "b") {
                brr.push(i);
            }
        }
        var c = arr.concat(brr);
        return c;
    
        /*********end*********/
    }
    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值