JavaScript基础——数组

一 、数组的介绍

  1.概念:数据的集合,任何数据都可以放在数组中

  2.作用:可以同时操作多个数据

  3.数组的创建:

    字面量:var arr = [ ];

    构造函数:var arr = new Array( );       

var arr = [234,"hello"];
var arr2 = new Array(234,"hello");
console.log(arr);                
console.log(arr2);           console.log(arr == arr2);           //false 

// 任何两个数组都不相等
var arr = [6]; var arr2 = new Array(6); console.log(arr);                //表示有一个数组成员的值是6console.log(arr2);               //表示6个数组成员,每个成员的值是undefinedconsole.log(arr.length);          //1 console.log(arr2.length);          //6 //当只有一个数据且是数值时,字面量会在数组中保存这个数值;构造函数会将这个数值作为长度,多个数值时表示数组成员 

二、数组的操作方法
  1.push:在数组的最后新增一个成员; arr.push(3,4,5,6,7,8,9) ;  返回值:数组的长度

  2.unshift:在数组的开头新增一个成员;arr.unshift(3,4,5,6,7,8,9) ;  返回值:数组的长度

  3. pop:删除数组的最后一个数组成员;arr.pop( );返回值:被删除的数组成员

  4.shift:删除数组的第一个数组成员; arr.shift( );返回值:被删除的数组成员

  5.splice:用于修改数组,向数组中添加新成员,删除数组成员; splice(start,num,replaceData1,replaceData2,.....)

    (注:start:起始位置新增或替换;num:删除几个成员;后面的参数是新增的成员或替换的成员)

     返回值:被删除成员的数组 ,若没有就是空数组

    arr.splice(2,1);      删除指定位置

    arr.splice(2,1,7);    删除并替换一个

    arr.splice(2,1,7,8,9);    删除并替换多个

    arr.splice(2,0,7);    在指定位置新增一个

  arr.splice(2,0,7,8,9);在指定位置新增多个

  6.slice: 截取数组成员;slice(n,m):从索引n,截取到索引m的前一个;返回值:截取成员的数组

    arr.slice(2);从下标2开始截取到最后

  7.sort:将数组按要求排序;返回值:排序后的数组

    arr.sort(function(a,b){

      return  a-b    //按升序排序

      return  b-a    //按降序排序

    })

  8.concat:将两个数组合并拼接;返回值:合并的新数组

    arr.concat([5,6,7,8])

  9.join:以指定内容作为连接符将数组转为字符串;返回值:字符串

    arr.join( ):默认连接符为”,“;

注:Es5新增的数组方法( indexOf,forEach,map,filter,some,every,reduce,reduceRight)

  特点:不改变原数组

1.indexOf:根据数组成员查索引

    arr.indexOf( ):一个参数时,参数是数组成员;两个参数时,第一个参数为查询开始位置,第二个为数组成员

    返回值:查询数组成员的索引,若没有该数组成员则返回 -1

2.forEach:遍历数组;返回值:没有返回值,可以通过声明变量并赋值得到数组的val,index,self

  arr.forEach(function(val,idx,self){

  console.log(val,idx,self)

  });

3.map:遍历数组,同时操作数据,并返回到新数组中;返回值:操作后的新数组

   var arr1 = arr.map(function(val,idx,self){

    return val *= 1.3;

  })

4.filter:遍历数组,同时筛选数据,当返回值为true时,将当前这次回调函数的执行时拿到的值,返回到新数组中(过滤)

   返回值:筛选后的新数组

  var arr1 = arr.filter(function(val,idx,self){

    return val > 30;

  })

  5.some:判断数组中是否有符合条件的成员;返回值:有就返回true,没有就返回false    

    var res = arr.some(function(val,idx,self){

    return typeof value === string";

  })

  5.every:判断数组中是否有符合条件的成员;返回值:都符合就返回true,否则就返回false    

    var res = arr.every(function(val,idx,self){

    return typeof value === string";

  })

总结:不改变原数组的方法 :slice( )    indexOf( )    concat( )

三、数组的排序

 var arr = [5,2,6,1,4,9]
        //冒泡排序
            //1.确定循环比较几轮 ——————arr.length - 1
                for(var i = 0;i < arr.length-1;i++){
            //2.开始轮流比较 ——————每轮都比较出最大值,下一轮少比较一个,arr.length-1-i
                    for(var j = 0;j < arr.length -1 -i;j++){
            //3.进行位置交换——————————将较大值放在较小值后面
                        if(arr[j] > arr[j+1]){
                            var ls = arr[j];
                            arr[j] = arr[j+1];
                            arr[j+1] = ls;
                        }
                    }
                }
                console.log(arr)

        //选择排序
            //1.确定循环比较几轮 ——————arr.length -1
                    for(var i = 0;i < arr.length -1;i++){
            //2.假设第一个数为最小值,记录数值和索引
                        var min = arr[i];
                        var minIndex = i;
            //3.拿第一个数依次与后面每个数比较 ——————每轮都比较出最小值,将最小值放在第一个位置
                        //下一轮最小值不用比较,每轮比较次数也相应减小——————arr.length
                        //每轮的第二个数是下一轮的第一个数,这个数不用和自身比较————i+1
                        for(var j = i+1;j < arr.length;j++){
                            if(min > arr[j]){
                                //记录较小值和索引
                                min = arr[j];
                                minIndex = j;
                            }
                        }
            //4.交换位置
                        //先将较大值放在较小值位置上
                        arr[minIndex] = arr[i];
                            //再将最小值放在每轮第一个位置上
                            arr[i] = min;
                    }
                    console.log(arr)
四、数组的应用
// 1.定义一个30项的数组,数组的每一项要求是1-10的随机数,每间隔5个数字,求出前五个数的平均值
    // 定义一个30项的数组
    var arr = [];
    for(var i=0;i<30;i++){
        arr.push(random(1,10))
    }
    console.log(arr)
    // 每间隔5个数字,
    // 0~5
    // 5~10
    // 10~15
    for(var i=0;i<arr.length;i+=5){
        var a = arr.slice(i,i+5);
        var num = avg(a);
        console.log(num);
    }

    function avg(myarr){
        var sum = 0;
        for(var i=0;i<myarr.length;i++){
            sum += myarr[i];
        }
        return sum
    }
//2.二维数组随机数
    function Make(a,b){
        var arr1 = new Array();
        for(var i = 0;i < 5;i++){
            var arr = new Array();
            for(var j = 0;j < 5;j++){
                arr[j] = Math.round(Math.random(a,b) * (b-a) + a)
            }
            arr1.push(arr)
        }
        return arr1
    }
    console.log(Make(3,8))

//3.编写函数map(arr)
    function map(arr) {
        var arr1 = [];
        for(var i = 0;i < arr.length;i++){
            arr1.push(parseFloat(arr[i] * 1.3).toFixed(1));
        }
        return arr1
    }
    var arr = [1,2,3,4,5];
    console.log(map(arr))

//4.编写函数has(arr,60)
     function has(arr,num){
         for(var i = 0;i < arr.length;i++){
             if(arr[i] === num){
                 return true
              }
         }
         return false
      }
      var arr = [1,2,3,4,60]
      console.log(has(arr,60))  

//5.编写函数norepeat(arr)
    function norepeat(arr) {
        var arr1 = [];
        for(var i = 0;i < arr.length;i++){
            if(!has(arr1,arr[i])){
                 arr1.push(arr[i])
            }
        }
        return arr1
     }
     var arr = [1,2,3,4,5,6,5,4,3,2,1]
     console.log(norepeat(arr))      

//6.编写add函数,要求插入一个数,按原来从小到大排序插入
     function add(arr,num){
         arr.push(num);
         arr.sort(function(a,b){
                return a-b
         })
         return arr
     }
     var arr = [1,2,3,4,6,7];
     console.log(add(arr,5))

  

原文地址:https://www.cnblogs.com/miaomiaolong2/p/12077691.html

时间: 2024-11-08 12:16:48

JavaScript基础——数组的相关文章

JavaScript基础数组的字面声名法(010)

1.两种方法的对比 数组在JavaScript中,就像大多数的其它语言 一样,是对象.我们可以使用JavaScript内置的数组构造函数Array()来创建数组.就象对象的字面声名法一样,数组也可以采用字面法来声名. 而且我们建议使用数组的字面声名法.下面来看看这两种创建数组的方法: // array of three elements // warning: antipattern var a = new Array("itsy", "bitsy", "

JavaScript基础-----数组(Array)

1.JavaScript 中创建数组的方法: (1).使用Array构造函数: var arr = new Array(); //创建一个空数组 var arr = new Array(5); //传递一个整数时,表示创建了一个长度为 5 的数组,如果传递一个字符串,则表示创建了包含这个字符串的数组 var arr = new Array(5,"abc",20) //传递多个元素时,表示创建了包含这些个元素的数组,有多少元素,长度就为多少 (2).使用数组字面量: var arr =

javascript基础--数组,字符串操作,Math函数

数据的操作方法: 1 var arr = [1,2,3,4,5]; 2 3 arr.push(6,7);//可以在数组的最后一位开始添加数列(1+);并返回数组的长度. 4 5 arr.pop();//删除数组的最后一位.并返回那一位数组的内容. 6 7 arr.shift();//删除数组的第0位,并返回那一位数组的内容. 8 9 arr.unshift(-1,0);//从数组的第0位前,添加数列,并返回数组的长度. 10 11 arr.join('');//将每列数组按照指定的符号或者不设置

javascript基础数组,字符串的操作和冒泡函数等

 数组 var arr = new Array(2,1,5,6,7,4,9); var arr2 = Array(1,2,"33"); //省略new来创建数组 var arr3 = [1,2,"33"]; //通过常量来创建数组 Math.random(); //0~1之间任意的数. for(var i in arr){document.write(arr[i]+" ");} //另一种遍历arr的方式.这个方法要比for循环效率高 1.栈结构

js基础--javascript基础概念之数组(二)

js基础--javascript基础概念之数组 数组栈方法 数组可以像栈一样.栈是一种先进后出的数据结构,最先添加的数据最后一个出来.栈方法添加数据也称为 推入  移除数据称为 弹出. js为数值栈方法提供了 push()   和  pop() ;  两个方法. push() push() 方法接受参数就是你要添加进入到数组的值.push()  方法会将他们逐一添加到数组的末尾  数组的length属性会跟着更新数据. *push(多个数组元素值) 返回的修改后的数组长度 var array =

js基础--javascript基础概念之数组

js基础--javascript基础概念之数组 在ECMAScript 中 ,数组是很常用的数据类型,js中的数组和其他很多语言的数组有明显的区别.js的数组可以保持任何类型的数值,一个数组中可以保存着多个不同类型的数值.js数组大小(长度)是可以调整的.可以随着数据的添加自动增长数组长度. 创建数组: 一.数组字面量 数组字面量由一对包含数组项的方括号[]表示. var array = [ 'kin', 'cheong', 'change', 'hello', 'haha', 'hi' ];

JavaScript基础知识梳理--数组

JavaScript基础知识梳理--数组 1.创建方法 空数组:var obj=new Array(); 指定长度数组: var obj=new Array( size ); 指定元素数组 :  var obj=new Array( 元素1,元素2,....): 单位数组:var obj=new Array[ 元素1,元素2,元素3,...,元素N]; 多维数组:var a=new Array( [数组1],[数组2],[数组3],...,[数组N] ); 2.基本操作 存取数组元素: 单维数组

JavaScript基础之数组的重排序

JavaScript基础之数组的重排序 数组(Array)算是继Object之后我们最常用到的类型了.与其他语言不同的是,javascript数组的每一项可以保存任何类型的数据,并且数组的大小是可以动态调整的. JavaScript已经为我们提供了两个数组重排序的方法,reverse()和sort() 方法. 其中reverse()方法会反转数组项的顺序.举个栗子: var values = [18,4,56,1,"a","b","abc"];

javaScript基础03数组..

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>javascript基础练习03</title> 6 <script> 7 // 简单数据类型 Number String Boolean null undefined 8 9 // 复杂数据类型 对象,方法.,引用类型 10