【12-07】新增数组的方法、数组排序、选择排序、基本数据类型和引用数据类型

一、ES5新增的数组方法:

1、map();

            语法:arr.map(function( item,i){

                            return item*3;

                        })   

            含义:遍历数组,item代表是每一个元素,i代表下标

           返回值:映射出来的新数组

 

2、forEach();

语法:arr.forEach(function(item,i){

                没有return。

           })

含义:遍历数组

返回值:

3、filter();

语法:arr.filter(function(item,i){

                return  item > 8; //return 条件

           }) 

含义:过滤满足条件的元素

返回值:以数组形式返回满足条件的元素

 

4、some();

语法:arr.some(function(item,i){

                 return item > 8; //return 条件

           })

含义:只要有一个元素满足条件,返回值便为true,所有元素都不满足条件,返回值即为false

返回值:true/false

 

5、every();

语法:arr.every(function(item,i){

                 return item; //return 条件

           })

含义:数组中需要所有的元素都满足条件,返回值才能为true,有一个不满足条件,返回值便为false

返回值:true/false


二、数组的排序 

冒泡排序:排序思路:相邻两个元素进行比较,大的往后排。

举例:var arr = [12,8,5,1];

//  第一轮:

arr.length - 1:元素是4个,但是比较3次,这个-1的目的是,4个元素,第一轮排够3次就够了

for ( var i = 0; i < arr.length - 1; i++ ){

if ( arr[ i ] > arr[ i + 1 ] ){

        var temp = arr [ i ];

        arr [ i ] = arr [ i + 1 ];

        arr [ i + 1 ] = temp

    }

console.log(arr);

}

         arr[0]和arr[1]     [8,12,5,1]

         arr[1]和arr[2]     [8,5,12,1]

         arr[2]和arr[3]     [8,5,1,12]

 //  比完一轮,最大的跑最后了

// 第二轮:

arr.length - 1 - 1:元素是4个,但是比较2次(因为第一轮已经确定最后一个元素是最大的并且已经排在了最后一位,不用动了)

for ( var i = 0; i < arr.length - 1 - 1; i++ ){

if ( arr[ i ] > arr[ i + 1 ] ){

        var temp = arr [ i ];

        arr [ i ] = arr [ i + 1 ];

        arr [ i + 1 ] = temp

    }

console.log(arr);

}

        arr[0] 和arr[1]     [5,8,1,12]

        arr[1]和arr[2]      [5,1,8,12]

// 第二轮,最大的两个跑后面了

// 第三轮

arr.length - 1 - 1:元素是4个,但是比较1次(因为第一轮、第二轮已经确定最后一个元素是最大的并且已经排在了最后一位,倒数第二个元素次之并且已排好位置,不用动了)

for ( var i = 0; i < arr.length - 1 - 1 - 1; i++ ){

if ( arr[ i ] > arr[ i + 1 ] ){

        var temp = arr [ i ];

        arr [ i ] = arr [ i + 1 ];

        arr [ i + 1 ] = temp

    }

console.log(arr);

}

        arr[0]和arr[1]    [1,5,8,12]

//第三轮结束便完成排序

综上所述:冒泡排序可优化为以下代码(简化成for循环嵌套)


选择排序: 排序思路:假设第一个元素是最小值,拿第一个元素和后面的所有元素进行对比,如果发现有比第一个元素还小的元素,就进行交换。

举例:var arr = [ 12,8,5,3];

//第一轮

    for (var j = 1; j < arr.length; j++) {

        if (arr[0] > arr[ j ]) {

            var temp = arr[0];

            arr[0] = arr[ j ];

            arr[ j ] = temp;

        }

        console.log(arr);

    }

         arr[0] 和 arr[1]      [8,12,5,3]

         arr[0] 和 arr[2]      [5,12,8,3]

         arr[0] 和 arr[3]      [3,12,8,5]

//经过一轮比较,最小的跑最前面

//第一轮比较完毕,第一个元素已经确定是最小的

//第二轮

    for (var j = 2; j < arr.length; j++) {

        if (arr[1] > arr [ j ]) {

            var temp = arr[1];

            arr[1] = arr[ j ];

            arr[ j ] = temp;

        }

        console.log(arr);

    }

        arr[1] 和 arr[2]      [3,8,12,5]

        arr[1] 和 arr[3]      [3,5,12,8]

//第三轮

    for (var j = 3; j < arr.length; j++) {

        if (arr[2] > arr[j]) {

            var temp = arr[2];

            arr[2] = arr[ j ];

            arr[ j ] = temp;

        }

        console.log(arr);

    }

        arr[2]和arr[3]        [3,5,8,12]

经过三轮比较排序,原数组已按从小到大顺序排序了

综上所述,选择排序可以优化为一下代码(简化成for循环嵌套)

 


三、数据类型

数据类型:基本数据类型和引用数据类型

1、基本数据类型:number,string,boolean,undefined,null

   typeof 10 ===>"number"          typeof null===> "object"

2、引用数据类型: obejct , array

【注】通过tyepof检测引用数据类型的结果都是object


 3、基本数据类型:

    3-1.基本数据类型变量存的是值

    3-2. 基本数据类的变量存储在栈内存

    3-3. 基本数据类型的变量和变量互不影响

 

4、引用数据类型:

    4-1、引用数据类型的变量存储的是地址值

    4-2、引用数据类型的变量存储在堆内存

    4-3、引用数据类型的变量如果和另一个引用数据类型的变量共用一个地址,其中一个变化另一个也会受到影响。

 

案例三连:

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值