0
点赞
收藏
分享

微信扫一扫

JavaScript的第七天

非衣所思 2022-04-18 阅读 115

JavaScript数组的方法(迭代)

var arr1 = [1, 2, 3, 10, 20, 30, 50, 80, 99];
    var arr2 = [4, 5, 6];
    var arr3 = ["A", "B", "C", "D", "E", "F", "G"];

1.every(函数) 检测数值元素的每个元素是否都符合条件。

函数:funtion(item){// item 数组元素}
    console.log(arr1.every(function (item) {
        item 数组元素
       console.log(item>0);
        return item > 0
    }))

2.some(函数) 检测数组元素中是否有元素符合指定条件。

console.log(arr1.some(function (item) {
        // item 数组元素
        // console.log(item>0);
        return item > 10
    }))

3.filter(函数) 检测数值元素,并返回符合条件所有元素的数组。

console.log(arr1.filter(function (item) {
        // item 数组元素
        return item > 10 && item < 90
    }))

4.forEach(函数) 数组每个元素都执行一次回调函数。

函数:function(value,index,arr){}
     value:数组元素的值
    index:索引
     arr:数组本身
    var arr7 = [];
    arr1.forEach(function (val, index, arr) {
       console.log(val,index,arr)
       console.log(val+10)
        arr7.push(val + 10)
    })
    console.log(arr7)
for(var i=0;i<arr1.length;i++){
      console.log(arr1[i],i,arr1)
  }

5.map() 通过指定函数处理数组的每个元素,并返回处理后的数组。

console.log(arr1.map(function (item) {
        return item + 10
    }))

5.reduce(函数) 将数组元素计算为一个值(从左到右)。

function(total,val){}
    total:总数
    val:每一项的值
    console.log(arr1.reduce(function (sum, val) {
        sum += val;
        return sum / 9;
    }))
console.log(arr3.reduce(function (sum, val) {
        sum += val
        return sum
    }))

5.reduceRight(函数) 将数组元素计算为一个值(从右到左)。

console.log(arr3.reduceRight(function (sum, val) {
        sum += val
        return sum
    }))

6.ES6新增的方法

keys() 返回数组的可迭代对象,包含原始数组的键(key)

var xxx=arr2.entries();
    console.log(xxx.next().value);
    
    var yyy=arr2.keys();
    console.log(yyy.next().value);

JavaScript数组的排序方法

var arr = [4, 5, 6, 1, 50, 80, 99, 2, 3, 'x', 10, 20, 30, "E", "F", "G", "a", "b"];
    var arr2 = [4, 5, 6];
    var arr3 = ["A", "B", "C", "D", "E", "F", "G"];
    var arr5 = ["你好", 'a', 'b', 'c', 6, 5, 4]

1.sort() 对数组元素进行排序

console.log(arr2.sort());
    console.log(arr3.sort());
    console.log(arr5.sort());

依照 ASCII (字典) 数组的每一项都会执行toString(),得到字符串,对字符串排序

var arr6 = [4, 5, 6, 40, 50, 60];
    console.log(arr6.sort()); //[4, 40, 5, 50, 6, 60]

给sort(函数) 添加函数 比较函数

function up(a, b) {
         if (a < b) {
             return -1
        } else if (b < a) {
             return 1
         } else {
             return 0
         }
     }
    function down(a, b) {
        if (a > b) {
            return -1
        } else if (b > a) {
            return 1
         } else {
            return 0
       }
   }

简写

function up(a,b){
        return a-b
    }
    function down(a,b){
        return b-a
    }
    console.log(arr6.sort(up))
    console.log(arr6.sort(down))

JavaScript数组的冒泡排序

var arr = [3, 4, 2, 1]; //[3,2,1,4] [2,1,3,4] [1,2,3,4]

升序:将第一个元素于后续元素进行比较,如果前一个元素大于后一个元素互换位置,下一次拿上一次大的值于后续元素进行比较,如果前一个元素大于后一个元素互换位置,知道确定最大的元素选出第二大的元素选出第三大的元素... 最后两个元素进行对比下次对比次数比上次对此次数减一

for (var i = 0; i < arr.length - 1; i++) {
         循环比较的次数
        for (var j = 0; j < arr.length - i - 1; j++) {
             console.log(arr[j])
             需要arr[j] 和 arr[j+1]进行比较
            if (arr[j] > arr[j + 1]) {
                 互换位置
                 console.log("互换位置");
                var k;
                k = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = k;
            }
        }
        console.log(arr)
    }

将外层for循环拆解

当i=0时  
     for (var j = 0; j < arr.length-1; j++) {
    //     // console.log(arr[j])
    //     // 需要arr[j] 和 arr[j+1]进行比较
    //     if (arr[j] > arr[j + 1]) {
    //         // 互换位置
    //         console.log("互换位置");
    // var k;
    // k=arr[j];
    // arr[j]=arr[j + 1];
    // arr[j + 1]=k;
    //     }
    // }
    // console.log(arr);

    // 当i=1时;
    // for (var j = 0; j < arr.length-2; j++) {
    //     // console.log(arr[j])
    //     // 需要arr[j] 和 arr[j+1]进行比较
    //     if (arr[j] > arr[j + 1]) {
    //         // 互换位置
    //         console.log("互换位置");
    //         var k;
    //         k=arr[j];
    //         arr[j]=arr[j + 1];
    //         arr[j + 1]=k;
    //     }
    // }
    // console.log(arr)

    // 当i=2时;
    // for (var j = 0; j < arr.length-3; j++) {
    //     // console.log(arr[j])
    //     // 需要arr[j] 和 arr[j+1]进行比较
    //     if (arr[j] > arr[j + 1]) {
    //         // 互换位置
    //         console.log("互换位置");
    //         var k;
    //         k=arr[j];
    //         arr[j]=arr[j + 1];
    //         arr[j + 1]=k;
    //     }
    // }
    // console.log(arr)

两个变量互换值

var a=10;
    var b=20;
    var c;
    c=a;
    a=b;
    b=c;
    // console.log(a,b)

封装

function babel(arr) {
        for (var i = 0; i < arr.length - 1; i++) {
            // 循环比较的次数
            for (var j = 0; j < arr.length - i - 1; j++) {
                // console.log(arr[j])
                // 需要arr[j] 和 arr[j+1]进行比较
                if (arr[j] > arr[j + 1]) {
                    // 互换位置
                    // console.log("互换位置");
                    var k;
                    k = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = k;
                }
            }
            // console.log(arr)
        }
        return arr
    }
var arr2=[1,2,4,5,1,2,1,3,5,1,81,282,18]
    console.log(babel(arr));
    console.log(babel(arr2));

JavaScript数组的选择排序

var arr = [3, 4, 2, 1]; // [1, 4, 2, 3] [1, 2, 4, 3] [1, 2, 3, 4]

选择排序:先定义最大值或最小值,然后将每个数组项于最值比较,取最值放到元素的最(左或右)端,层层比较,互换元素下标位置,再赋值。

设:x为最大值,x和每一个数组项进行对比,如果比x大,互换元素的下标

for (var i = 0; i < arr.length - 1; i++) {
        // 假设最值的索引
        var min = i; //第i个元素为最值
        // min=0;
        for (var j = i + 1; j < arr.length; j++) {
            // j=1 2 3 
            if (arr[j] < arr[min]) {
                min = j;// 取最小值的索引
                // console.log(j)
            }
        }
        var k = arr[i];
        arr[i] = arr[min];
        arr[min] = k;
        console.log(arr);
    }
    // console.log(arr);

封装

function choose(arr) {
        for (var i = 0; i < arr.length - 1; i++) {
            // 假设最值的索引
            var min = i; //第i个元素为最值
            for (var j = i + 1; j < arr.length; j++) {
                if (arr[j] < arr[min]) {
                    min = j;
                    console.log(j)
                }
            }
            var k = arr[i];
            arr[i] = arr[min];
            arr[min] = k;
            // console.log(arr);
        }
        return arr
    }

    console.log(choose(arr));
举报

相关推荐

python(第七天)

HCIP第七天

第七天bj

Java第七天

LeetCode打卡第七天

git学习第七天

0 条评论