数组常用(创建数组,数组方法)

本文详细介绍了JavaScript中数组的创建方式,包括构造函数和字面量,展示了如何使用常见的遍历方法(for、for...in、for...of),以及数组的高级操作如forEach、map、filter和reduce。还涵盖了数组增删改查的实例,如pop、shift、push和unshift。
摘要由CSDN通过智能技术生成

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>数组</title>

</head>

<body>

</body>

<!-- <script>

    /*

     //数组

     //构造函数--创建数组

     //构造函数创建方法一

     var arr = new Array();

     // arr[0] = 100;

     // arr[1] = 'hello';

     // arr[3] = false;

     //arr.length自动随数组增加而增加

     arr[arr.length] = 100;

     arr[arr.length] = 'hello';

     console.log(arr);

     //构造函数创建方法二

     var arr1 = new Array(100, "hello", true);//3个元素

     var arr2 = new Array(10);//创建一个长度为10的数组

     var arr3 = new Array("hello");//创建一个元素的数组

 */

    //字面量--创建数组

    var arr = [];//空数组

    var arr1 = [10, "hello", false];

    console.log(arr1.length);

    console.log(arr1);

    console.log(arr1[0]);

    console.log(arr1[1]);

    console.log(arr1[2]);

    // 遍历数组

    //常用

    console.log('var i = 0; i < arr1.length; i++');

    for (var i = 0; i < arr1.length; i++) {

        console.log(arr1[i]);

    }

    //for...in语句

    console.log('var i in arr1');

    for (var i in arr1) {

        console.log(arr1[i]);

    }

    // ES6

    //for...of语句    console.log('var val of arr1');

    for (var val of arr1) {

        console.log(val);

    }

</script> -->

<!-- <script>

    // 数组方法

    //遍历数组新方法 遍历数组新方法 遍历数组新方法 遍历数组新方法 遍历数组新方法 遍历数组新方法

    //方法一:forEach(function (v, i, arr)

    /*

    console.log('forEach(function (v, i, arr)');

    var arr = [90, 78, 100, "hello"];

    arr.forEach(function (v, i, list) {

        console.log(v);

        console.log(i);

        console.log(list);

        //forEach() 本身是不支持的 continue 与 break 语句的

        if(v%2==1){

             return;//return模拟 continue 关键字的效果

       }

    });//回调函数

    // arrObj.forEach(function (v, i, arr) {

    //     v//当前遍历的每个元素

    //     i//当前元素对应的下标

    //     arr//数组本身

    // })

    */


 

    //方法二:map()可映射(计算)

    /*

    console.log('map()');

    var arr = [90, 78, 100];

    var res = arr.map(function (v, i, arr) {

        console.log(v);//当前遍历的每个元素

        console.log(i);//当前元素对应的下标

        console.log(arr);//数组本身

        return 2 * v;//映射成2倍

    });

    console.log(res);

    // arrObj.map(function (v, i, arr) {

    //     v//当前遍历的每个元素

    //     i//当前元素对应的下标

    //     arr//数组本身

    //     return 2 * v;//映射成2倍

    // })

    // 应用

    var arrc = [90, 78, 100, 50, 15];

    var resc = arrc.map(function (v) {

        if (v >= 60) {

            return '及格';

        } else {

            return '不及格';

        }

    })

    console.log(resc);!

    */

    // 方法三:arr.filter(function (val, i, arr)多用于过滤

    /*

    console.log('arr.filter(function (val, i, arr)');

    var arr = [89, 100, 90, 78, 49, 60];

    var cot = 0;

    var res = arr.filter(function (val, i, arr) {

        console.log(val);

        console.log(i);

        console.log(arr);

        cot += val;

        return val <= 90

    })

    console.log(cot);

    console.log(res);

    */

    //迭代求和

    //arr.reduce(function (total, v, i, arr),参数2 )

    console.log('arr.reduce(function (total, v, i, arr) ,参数2)')

    var arr = [100, 80, 70, 96, 30];

    var res = arr.reduce(function (total, v, i, arr) {

        // console.log(total, v);

        // return 1;

        return total + v;

    }, 0)

    console.log(res);

    //把函数里的返回值作为回调函数的第一个参数的值

    //arr0bj.reduce(function (total, V, i, arr) {

    //total//初始值,或函数的返回值

    // v当前遍历的元素

    // i当前元素的下标

    //}, 参数2)

    // 参数2: 可选total的初始 值若省略,total的初始值是数组的第一个元素

    //应用一

    console.log('应用一');

    var arRt = [100, 80, 70, 96, 30];

    var ret = arRt.reduce(function (total, v, i, arr) {

        if (v < 60) {

            total = total + v;

        }

        return total;

    }, 0)

    console.log(ret);

    var ret1 = arRt.reduce(function (total, v, i, arr) {

        if (v >= 60) {

            total = total + v;

        }

        return total;

    }, 0)

    console.log(ret1);

    //应用二(reduce和filter结合)

    console.log('应用二');

    var arrc = [100, 80, 70, 96, 30];

    var resc = arrc.filter(function (v, i, arr) {

        return v >= 60;

    })

    var rescc = resc.reduce(function (total, v, i, arr) {

        return total + v;

    }, 0)

    var resc1 = arrc.filter(function (v, i, arr) {

        return v < 60;

    })

    var rescc1 = resc1.reduce(function (total, v, i, arr) {

        return total + v;

    }, 0)

    console.log(resc);

    console.log(rescc);

    console.log(resc1);

    console.log(rescc1);

</script> -->

<!-- <script>

    //数组方法

    //删除方法 删除方法 删除方法 删除方法 删除方法 删除方法 删除方法 删除方法 删除方法 删除方法

    //pop()删除数组的最后一个元素并返回删除的元素

    //shift()   删除并返回数组的第一个元素

    /*

    var arr = [100, 80, 50, 'hello', true];

    console.log(arr.shift());

    console.log(arr.pop());

    console.log(arr);

    //arrObj.pop()删除数组里的最后一个元素

    // arrobj.shift() 删除数组里的第一个元素

    //返回值:删除的元素

    */

    // 增加方法

    //push()    向数组的末尾添加一个或更多元素,返回新数组的长度

    //unshift()     向数组的开头添加一个或更多元素,并返回新的长度。

    //var arr = [100, 80, 50, 'hello', true];

    // console.log(arr.unshift('world', 2));

    // console.log(arr.push('world', 1));

    // console.log(arr);

    // arrObj .pop()删除数组里的最后一个元素

    // arr0bj.shift() 删除数组里的第一个一个元素

    //返回值:删除的元素

    // arrObj . push(元素1,元素2,....) 在数组的尾部添加一个或多个元素多 个元素之间用逗号隔开

    // arrObj .unshift(元素1,元素2,....) 在数组的头部添加一个或多个元素多 个元素之间用逗号隔开

    // 返回值: 新数组的长度

    //应用

    // 重复项去除

    //方案一

    // var arr1 = [100, 80, 50, 'hello',100, true, 1];

    // var arr2 = [];

    // arr1.forEach(function (v) {

    //     if (arr2.indexOf(v) === -1) {

    //         arr2.push(v);

    //     }

    // })

    // console.log(arr2);

    //方案二

    var arr1 = [100, 80, 50, 'hello', 100, true, 1];

    var rers = arr1.filter(function (v, i) {

        return arr1.indexOf(v) === i;

    })

    console.log(rers);

</script> -->

<!-- <script>

    //数组方法

    //sort() 方法用于对数组的元素进行排序。

    //arrayObject.sort(sortby)

    //     sort() 方法用于对数组的元素进行排序。

    // 排序顺序可以是字母或数字,并按升序或降序。

    // 默认排序顺序为按字母升序。

    // 数字升序

    var arr = [40, 100, 1, 5, 25, 10];

    var arr2 = arr.sort(function (a, b) { return a - b });

    console.log(arr2);

    // 数字降序

    var arr3 = [40, 100, 1, 5, 25, 10];

    var arr4 = arr3.sort(function (a, b) { return b - a });

    console.log(arr4);

    //字母升序

    var arr5 = ["Banana", "Orange", "Apple", "Mango"];

    var arr6 = arr5.sort();

    console.log(arr6);

    // 字母降序

    var arr7 = ["Banana", "Orange", "Apple", "Mango"];

    arr7.sort();

    var arr8 = arr7.reverse();//reverse() 方法用于颠倒数组中元素的顺序。

    console.log(arr8);

</script> -->

<script>

    // splice() 方法用于添加或删除数组中的元素。

    // 在数组第三个位置添加新元素

    var arr3 = ["Banana", "Orange", "Apple", "Mango"];

    var arr4 = arr3.splice(2, 0, "Lemon", "Kiwi");

    console.log(arr3);

    console.log(arr4);//删除的元素组成的数组

    //移除数组的第三个元素,并在数组第三个位置添加新元素:

    var arr1 = ["Banana", "Orange", "Apple", "Mango"];

    var arr2 = arr1.splice(2, 1, "Lemon", "Kiwi");

    console.log(arr1);

    console.log(arr2);//删除的元素组成的数组

    //从第三个位置开始删除数组后的两个元素:

    var arr5 = ["Banana", "Orange", "Apple", "Mango"];

    var arr6 = arr5.splice(2, 2);

    console.log(arr5);

    console.log(arr6);//删除的元素组成的数组

    // splice去重

    var arr = [true, 10, 6, 6, 9, 9, 9, "hello", 6, true, 9];

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

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

            if (arr[i] === arr[j]) {

                arr.splice(j, 1);

                j--;

            }

        }

    }

    console.log(arr);

    //arr0bj.splice(参数1,参数2,参数3)..在参数1的位置删除参数2个元素,

    //并把参数3里的元素添加到参数1

    //参数1:必需,删除 / 添加元素位置

    //参数2:必需。,删除元素的个数

    //参数3:可选..添加的元素..多个元素之间用短号隔开

    //返回值:删除的元素组成的数组

    // slice截取某些功能类似效果

    // arr0bj.slice(参 数1,参数2)

    //参数1:必需开始截取的位置 可以为负

    //参数2:可选结束截取的位置 可以为负 不包含结束

    //返回值:截取到的数组

    // arr0bj . copyWithin(参数1,参数2,参数3)

    //参数1:必需复制到指定目标索引位置。

    //参数2:可选元素复制的起始位置。

    //参数3:可选元素复制的结束位置。 若省略,从开始赋值到结尾

    //返回值:复制替换后的数组

    // 复制数组的前面两个元素到后面两个元素上

    var fruits = ["Banana", "Orange", "Apple", "Mango"];

    fruits.copyWithin(2, 0);

    console.log(fruits);//Apple,Banana,Mango,Orange

    // every() 方法

    // 用于检测数组所有元素是否都符合指定条件(通过函数提供)

    // 所有元素都满足条件,则返回 true。有一个元素不满足,则整个表达式返回 false

    // some() 方法

    // 用于检测数组所有元素是否都符合指定条件(通过函数提供)

    // 没有满足条件的元素,则返回false。有一个元素满足条件,则表达式返回true

    // var arr = [10,1, "hello", 7, 8, "abc"];

    var arr = [10, 8, 10, 70];

    var res = arr.every(function (item, i, list) {

        // console.log( item) ;

        return item % 2 === 0;

    })

    // console.1og(res);

    var res = arr.some(function (item) {

        return item >= 80;

    })

    I

    console.log(res);

    // 更多:https://www.runoob.com/jsref/jsref-obj-array.html

</script>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值