JavaScript Array

本文详细介绍了JavaScript中的Array对象,包括创建数组、数组赋值、访问数组以及Array对象的属性和方法。示例中演示了concat、copyWithin、entries、every、fill、filter、find、findIndex、forEach、from、includes、indexOf、isArray、join、lastIndexOf、map、reduce、reduceRight、reverse、shift、slice、sort、splice、toString、toLocaleString、unshift等方法的用法,帮助理解数组操作和遍历。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习目标


前端
JavaScript Array对象


学习内容

一、创建Array数组实例

<script type="text/javascript">
        /* 
            数组对象是使用单独的变量名来存储一系列的值。
        */
        //一、创建Array数组实例
        var a = new Array();
        var b = new Array(3);
        var c = new Array("java", "vue", "js");
        /* 
           创建数组的语法:
               new Array();
               new Array(size);
               new Array(element0, element1, ..., elementn);  
           参数:
               其中,参数 size 是期望的数组元素个数。返回的数组,length 字段将被设为 size 的值。
               参数 element ..., elementn 是参数列表。当使用这些参数来调用构造函数 Array() 时,新创建的数组的元素就会被初始化为这些值。它的 length 字段也会被设置为参数的个数。
           返回值:
               返回新创建并被初始化了的数组。
               如果调用构造函数 Array() 时没有使用参数,那么返回的数组为空,length 字段为 0。
               当调用构造函数时只传递给它一个数字参数,该构造函数将返回具有指定个数、元素为 undefined 的数组。
               当其他参数调用 Array() 时,该构造函数将用参数指定的值初始化数组。
               当把构造函数作为函数调用,不使用 new 运算符时,它的行为与使用 new 运算符调用它时的行为完全一样。
       */

二、数组赋值

        //二、数组赋值
        document.write("################################### Array 数组赋值")
        document.write("<br />")
        //赋值方式1(常规方式)
        var arr = new Array();
        arr[0] = "java";
        arr[1] = "vue";
        arr[2] = "js";
        document.write("arr:" + arr)
        document.write("<br />")
        // 赋值方式2(简结方式)
        var arr1 = new Array("C", "C++", "C#");
        document.write("arr1:" + arr1)
        document.write("<br />")
        // 赋值方式3(字面)
        var arr2 = ["java", "vue", "js"];
        document.write("arr2:" + arr2)
        document.write("<br />")

三、访问数组

        //三、访问数组
        document.write("################################### Array 访问数组")
        document.write("<br />")
        /* 
            通过指定数组名以及索引号码,你可以访问某个特定的元素。 
        */
        var value = arr[0];
        document.write("获取arr第一个元素:" + value)
        document.write("<br />")
        //修改
        arr[2] = "C#";
        document.write("修改后的arr:" + arr)
        document.write("<br />")
        /* 
         注:所有的JavaScript变量都是对象。数组元素是对象。函数是对象。因此,你可以在数组中有不同的变量类型。
        */

四、数组 对象属性和方法

        /* 
         Array 对象属性:
             1.constructor:返回对创建此对象的数组函数的引用。
             2.length:设置或返回数组中元素的数目。
             3.prototype:使您有能力向对象添加属性和方法。
        */
        document.write("################################### Array 对象属性")
        document.write("<br />")
        // 1.constructor:返回对创建此对象的数组函数的引用。
        var test = new Array();
        if (test.constructor == Array) {
            document.write("This is an Array");
        }
        if (test.constructor == Boolean) {
            document.write("This is a Boolean");
        }
        if (test.constructor == Date) {
            document.write("This is a Date");
        }
        if (test.constructor == String) {
            document.write("This is a String");
        }
        document.write("<br />")
        // 2.length:设置或返回数组中元素的数目。
        document.write("arr的元素个数:" + arr.length)
        document.write("<br />")
                /*
            Array 对象方法:
                1.concat()	        连接两个或更多的数组,并返回结果。
                    该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
                    语法:arrayObject.concat(arrayX,arrayX,......,arrayX)。其中,参数arrayX 必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。
                    返回值:返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。
                2.copyWithin()	    从数组的指定位置拷贝元素到数组的另一个指定位置中。  
                    语法:array.copyWithin(target, start, end)
                        参数	    描述
                        target	必需。复制到指定目标索引位置。
                        start	可选。元素复制的起始位置。
                        end	    可选。停止复制的索引位置 (默认为 array.length)。如果为负值,表示倒数。
                    返回值:Array
                3.entries()	        返回数组的可迭代对象。
                    该对象包含数组的键值对 (key/value)。迭代对象中数组的索引值作为 key, 数组元素作为 value。
                    语法:array.entries()
                    返回值:数组迭代对象
                4.every()	            检测数值元素的每个元素是否都符合条件。
                    使用指定函数检测数组中的所有元素:
                        1.如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
                        2.如果所有元素都满足条件,则返回 true。
                    注:
                        1.every() 不会对空数组进行检测。
                        2.every() 不会改变原始数组。
                    语法:array.every(function(currentValue,index,arr), thisValue)
                        参数	                                描述
                        function(currentValue, index,arr)	必须。函数,数组中的每个元素都会执行这个函数
                                                            function函数参数如下:
                                                            currentValue	必须。当前元素的值
                                                            index	        可选。当前元素的索引值
                                                            arr	            可选。当前元素属于的数组对象
                        thisValue	可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
                    返回值:	布尔值。如果所有元素都通过检测返回 true,否则返回 false。
                5.fill()	            使用一个固定值来填充数组。
                    语法:array.fill(value, start, end)
                        参数	    描述
                        value	必需。填充的值。
                        start	可选。开始填充位置。
                        end	    可选。停止填充位置 (默认为 array.length)
                    返回值:array
                6.filter()	        检测数值元素,并返回符合条件所有元素的数组。
                    创建一个新的数组
                    语法:array.filter(function(currentValue,index,arr), thisValue)
                        参数	                                描述
                        function(currentValue, index,arr)	必须。函数,数组中的每个元素都会执行这个函数
                                                            function函数参数如下:
                                                            currentValue	必须。当前元素的值
                                                            index	        可选。当前元素的索引值
                                                            arr	            可选。当前元素属于的数组对象
                        thisValue	可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
                    返回值:返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。
                    注:
                        1.filter() 不会对空数组进行检测。
                        2.filter() 不会改变原始数组。
                7.find()	            返回符合传入测试(函数)条件的数组元素。
                    find() 方法为数组中的每个元素都调用一次函数执行:
                        当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。
                        如果没有符合条件的元素返回 undefined
                    语法:array.find(function(currentValue,index,arr), thisValue)
                        参数	                                描述
                        function(currentValue, index,arr)	必须。函数,数组中的每个元素都会执行这个函数
                                                            function函数参数如下:
                                                            currentValue	必须。当前元素的值
                                                            index	        可选。当前元素的索引值
                                                            arr	            可选。当前元素属于的数组对象
                        thisValue	可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
                    返回值:返回符合测试条件的第一个数组元素值,如果没有符合条件的则返回 undefined。
                    注:
                        1.find() 对于空数组,函数是不会执行的。
                        2.find() 并没有改变数组的原始值。
                8.findIndex()	        返回符合传入测试(函数)条件的数组元素索引。
                   findIndex() 方法为数组中的每个元素都调用一次函数执行:
                        当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。
                        如果没有符合条件的元素返回 -1
                    语法:array.findIndex(function(currentValue,index,arr), thisValue)
                        参数	                                描述
                        function(currentValue, index,arr)	必须。函数,数组中的每个元素都会执行这个函数
                                                            function函数参数如下:
                                                            currentValue	必须。当前元素的值
                                                            index	        可选。当前元素的索引值
                                                            arr	            可选。当前元素属于的数组对象
                        thisValue	可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
                    返回值:返回符合测试条件的第一个数组元素索引,如果没有符合条件的则返回 -1。
                    注:
                        1.findIndex() 对于空数组,函数是不会执行的。
                        2.findIndex() 并没有改变数组的原始值。
                9.forEach()	        数组每个元素都执行一次回调函数。
                    语法:array.forEach(function(currentValue, index, arr), thisValue)
                        参数	                                描述
                        function(currentValue, index,arr)	必须。函数,数组中的每个元素都会执行这个函数
                                                            function函数参数如下:
                                                            currentValue	必须。当前元素的值
                                                            index	        可选。当前元素的索引值
                                                            arr	            可选。当前元素属于的数组对象
                        thisValue	可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
                    返回值:undefined
                    注: forEach() 对于空数组是不会执行回调函数的。
                    forEach() 本身是不支持的 continue 与 break 语句的,我们可以通过 some 和 every 来实现。使用 return 语句实现 continue 关键字的效果。
                10.from()	            通过给定的对象中创建一个数组。
                    通过拥有 length 属性的对象或可迭代的对象来返回一个数组。如果对象是数组返回 true,否则返回 false。
                    语法:Array.from(object, mapFunction, thisValue)
                        参数	    描述
                        object	    必需,要转换为数组的对象。
                        mapFunction	可选,数组中每个元素要调用的函数。
                        thisValue	可选,映射函数(mapFunction)中的 this 对象。
                    返回值:数组对象。
                11.includes()	        判断一个数组是否包含一个指定的值。
                    语法:
                        1.arr.includes(searchElement)
                        2.arr.includes(searchElement, fromIndex)
                            searchElement	必须。需要查找的元素值。
                            fromIndex	    可选。从该索引处开始查找 searchElement。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜索。默认为 0。
                    返回值:布尔值。如果找到指定值返回 true,否则返回 false。
                    注:
                        1.如果fromIndex 大于等于数组长度 ,则返回 false 。该数组不会被搜索:
                        2.如果 fromIndex 为负值,计算出的索引将作为开始搜索searchElement的位置。如果计算出的索引小于 0,则整个数组都会被搜索。
                12.indexOf()	        搜索数组中的元素,并返回它所在的位置。
                    该方法将从头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。
                        如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。
                        如果在数组中没找到指定元素则返回 -1。
                    语法:array.indexOf(item,start)
                        item	必须。查找的元素。
                        start	可选的整数参数。规定在数组中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。
                    返回值:number 元素在数组中的位置,如果没有搜索到则返回 -1。
                13.isArray()	        判断对象是否为数组。
                    如果对象是数组返回 true,否则返回 false。
                    语法:Array.isArray(obj)
                    返回值:布尔值,如果对象是数组返回 true,否则返回 false。
                14join()	            把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
                    语法:arrayObject.join(separator)。其中,参数separator 可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。
                    返回值:返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 separator 字符串而生成的。
                15.keys()	            返回数组的可迭代对象,包含原始数组的键(key)。
                    语法:array.keys()
                    返回值:一个数组可迭代对象。
                16.lastIndexOf()	    搜索数组中的元素,并返回它最后出现的位置。
                    与indexOf,只是开始索引值为从后往前
                    语法:array.lastIndexOf(item,start)
                17.map()	            通过指定函数处理数组的每个元素,并返回处理后的数组。
                    map() 方法按照原始数组元素顺序依次处理元素。
                    语法:array.map(function(currentValue,index,arr), thisValue)
                        function(currentValue, index,arr)	必须。函数,数组中的每个元素都会执行这个函数
                                                            函数            参数:
                                                            参数	        描述
                                                            currentValue	必须。当前元素的值
                                                            index	        可选。当前元素的索引值
                                                            arr	            可选。当前元素属于的数组对象
                        thisValue   可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
                                        如果省略了 thisValue,或者传入 null、undefined,那么回调函数的 this 为全局对象。
                    返回值:返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
                    注:
                        1.map() 不会对空数组进行检测。
                        2.map() 不会改变原始数组。
                18.pop()	            删除并返回数组的最后一个元素
                    语法:arrayObject.pop()
                    返回值:arrayObject 的最后一个元素。
                    说明:pop() 方法将删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值。
                19.push()	            向数组的末尾添加一个或更多元素,并返回新的长度。
                    reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
                    reduce() 可以作为一个高阶函数,用于函数的 compose。
                    语法:arrayObject.push(newelement1,newelement2,....,newelementX)
                        参数	            描述
                        newelement1	    必需。要添加到数组的第一个元素。
                        newelement2	    可选。要添加到数组的第二个元素。
                        newelementX	    可选。可添加多个元素。    
                    返回值:把指定的值添加到数组后的新长度。(改变数组的长度)
                    说明:push() 方法可把它的参数顺序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是创建一个新的数组。push() 方法和 pop() 方法使用数组提供的先进后出栈的功能。     
                20.reduce()	    将数组元素计算为一个值(从左到右)。
                    语法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
                        function(total,currentValue, index,arr)	必需。用于执行每个数组元素的函数。
                                                                函数参数:
                                                                参数	        描述
                                                                total	        必需。初始值, 或者计算结束后的返回值。
                                                                currentValue	必需。当前元素
                                                                currentIndex	可选。当前元素的索引
                                                                arr	            可选。当前元素所属的数组对象。
                        initialValue	可选。传递给函数的初始值
                    返回值:返回计算结果
                    注: reduce() 对于空数组是不会执行回调函数的。
                21.reduceRight()	    将数组元素计算为一个值(从右到左)。     
                    reduceRight() 方法的功能和 reduce() 功能是一样的,不同的是 reduceRight() 从数组的末尾向前将数组中的数组项做累加。 
                22.reverse()	        颠倒数组中元素的顺序。
                    语法:arrayObject.reverse()
                    注:该方法会改变原来的数组,而不会创建新的数组。
                23.shift()	            删除并返回数组的第一个元素
                    语法:arrayObject.shift()
                    返回值:数组原来的第一个元素的值。(改变数组的长度)
                    说明:如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值。请注意,该方法不创建新数组,而是直接修改原有的 arrayObject。
                24.slice()	            从某个已有的数组返回选定的元素
                    语法:arrayObject.slice(start,end)
                        参数	            描述
                        start	    必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
                        end	        可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。
                                        如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
                    返回值:返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
                    说明:该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。
                    注:
                        1.可使用负值从数组的尾部选取元素。
                        2.如果 end 未被规定,那么 slice() 方法会选取从 start 到数组结尾的所有元素。
                25.some()	            检测数组元素中是否有元素符合指定条件。
                    some() 方法会依次执行数组的每个元素:
                        如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
                        如果没有满足条件的元素,则返回false。
                    语法:array.some(function(currentValue,index,arr),thisValue)
                        function(currentValue, index,arr)	必须。函数,数组中的每个元素都会执行这个函数
                                                            函数            参数:
                                                            参数	        描述
                                                            currentValue	必须。当前元素的值
                                                            index	        可选。当前元素的索引值
                                                            arr	            可选。当前元素属于的数组对象
                        thisValue	可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
                    返回值:	布尔值。如果数组中有元素满足条件返回 true,否则返回 false。
                    注:
                        1. some() 不会对空数组进行检测。
                        2. some() 不会改变原始数组。
                26.sort()	            对数组的元素进行排序
                    语法:arrayObject.sort(sortby)。参数sortby 可选。规定排序顺序。必须是函数。
                    返回值:对数组的引用。请注意,数组在原数组上进行排序,不生成副本。
                    说明:
                        1.如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。
                            要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
                        2.如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。
                            比较函数应该具有两个参数 a 和 b,其返回值如下:
                            若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
                            若 a 等于 b,则返回 0。
                            若 a 大于 b,则返回一个大于 0 的值。
                27.splice()	        删除元素,并向数组添加新元素。
                    语法:arrayObject.splice(index,howmany,item1,.....,itemX)
                        参数	                描述
                        index	            必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
                        howmany	            必需。要删除的项目数量。如果设置为 0,则不会删除项目。
                        item1, ..., itemX	可选。向数组添加的新项目。
                    返回值:Array,包含被删除项目的新数组(当howmany不为0时)。
                    说明:splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。
                        如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。
                    注:splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。
                28.toSource()	        返回该对象的源代码。
                    该原始值由 Array 对象派生的所有对象继承。toSource() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中。
                    语法:object.toSource()
                    浏览器支持:只有 Gecko 核心的浏览器(比如 Firefox)支持该方法,也就是说 IE、Safari、Chrome、Opera 等浏览器均不支持该方法。
                29.toString()	        把数组转换为字符串,并返回结果。
                    语法:arrayObject.toString()
                    返回值:arrayObject 的字符串表示。返回值与没有参数的 join() 方法返回的字符串相同。
                    说明:当数组用于字符串环境时,JavaScript 会调用这一方法将数组自动转换成字符串。但是在某些情况下,需要显式地调用该方法。
                    注:显示方式-数组中的元素之间用逗号分隔。
                30.toLocaleString()	把数组转换为本地数组,并返回结果。
                    语法:arrayObject.toLocaleString()
                    返回值:arrayObject 的本地字符串表示。
                    说明:首先调用每个数组元素的 toLocaleString() 方法,然后使用地区特定的分隔符把生成的字符串连接起来,形成一个字符串。
                31.unshift()	        向数组的开头添加一个或更多元素,并返回新的长度。
                    语法:arrayObject.unshift(newelement1,newelement2,....,newelementX)
                            参数	    描述
                        newelement1	必需。向数组添加的第一个元素。
                        newelement2	可选。向数组添加的第二个元素。
                        newelementX	可选。可添加若干个元素。
                    返回值:arrayObject 的新长度。
                    说明:unshift() 方法将把它的参数插入 arrayObject 的头部,并将已经存在的元素顺次地移到较高的下标处,以便留出空间。
                        该方法的第一个参数将成为数组的新元素 0,如果还有第二个参数,它将成为新的元素 1,以此类推。
                    注:
                        1.unshift() 方法不创建新的创建,而是直接修改原有的数组。
                        2.会改变数组长度
                        3.unshift() 方法无法在 Internet Explorer 中正确地工作!
                32.valueOf()	        返回数组对象的原始值
                    该原始值由 Array 对象派生的所有对象继承。valueOf() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中。
                    语法:arrayObject.valueOf()
        */
        document.write("################################### Array 对象方法")
        document.write("<br />")
        var concatArr = arr.concat(arr1);
        document.write("1、arr与arr1拼接之后的数组:" + concatArr);
        document.write("<br />");
        document.write("<hr />");

        document.write("2、复制拼接后的数组的前面两个元素到第三和第四个位置上:" + concatArr.copyWithin(2, 0, 2));
        document.write("<br />");
        //如果是arr.copyWithin(2),它会把所有元素从索引值2开始之后的位置上复制
        document.write("[1,2,3,4,5,6,7].copyWithin(3):" + [1, 2, 3, 4, 5, 6, 7].copyWithin(2)); //从索引值为3,即4,将4,5,6,7变为1,2,3,4,5,6,7
        document.write("<br />");
        document.write("<hr />");

        document.write("3、arr.entries():" + arr.entries());//对象无法直接显示,键值对形式
        document.write("<br />");
        //通过log打印
        for (let item of arr.entries()) {
            console.log(item);
        }
        document.write("<hr />");

        document.write("4、空数组的every()方法返回:" + a.every(() => { }));//对空数组来说,返回是true
        document.write("<br />");
        document.write("判断arr:" + arr + " 中元素长度是否都小于3:" + arr.every((val) => { return val.length < 3 }));
        document.write("<br />");
        document.write("判断arr中元素是否都为vue:" +
            arr.every((val, index, arr) => {
                //遍历每一个元素,只要不符合直接return不在执行,返回false
                // console.log(val, index);
                // console.log(arr);
                return val === "vue"

            }));
        document.write("<br />");
        document.write("<hr />");

        document.write("5.使数组[1, 2, 3, 4, 5, 6, 7, 8, 9]中元素都为vue, arr:" + [1, 2, 3, 4, 5, 6, 7, 8, 9].fill('vue'));
        document.write("<br />");
        document.write("使数组[1,2,3,4,5,6,7,8,9]第三元素到第六个元素值都为10:" + [1, 2, 3, 4, 5, 6, 7, 8, 9].fill(10, 2, 6));//不包含索引值为6的元素
        document.write("<br />");
        document.write("<hr />");

        var filterArr = [1, 2, 3, 4, 5, 6, 7, 8, 9].filter((val) => { return val > 5 });//得到的是数组,若没有符合条件的元素,则得到的是空数组
        document.write("6.返回数组[1,2,3,4,5,6,7,8,9]中元素值大于5, filterArr:" + filterArr);
        document.write("<br />");
        let newArr = [56, 15, 48, 3, 7].filter(function (value, index, array) {
            return value % 2 === 0;
        });
        document.write("数组[56, 15, 48, 3, 7]中元素值为偶数, newArr:" + newArr);
        document.write("<br />");
        let filterArr2 = [1, 1, 'RUNOOB', 'RUNOOB', true, true, 15].filter((item, index, arr) => {
            //当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素
            return arr.indexOf(item, 0) === index;
        });
        document.write("将数组[1,1,'RUNOOB','RUNOOB',true,true,15]中元素去重得到的新数组, filterArr2:" + filterArr2);
        document.write("<br />");
        document.write("<hr />");

        document.write("7.返回数组[1,2,13,4,5,6,7,8,9]中从索引开始第一个元素值大于5的元素值:" + [1, 2, 13, 4, 5, 6, 7, 8, 9].find((item) => { return item > 5 }));
        //符合条件true,return不在执行,返回符合测试条件的第一个数组元素值;若没有元素符合,则返回undefined
        document.write("<br />");
        document.write("<hr />");

        document.write("8.返回数组[1,2,13,4,5,6,7,8,9]中从索引开始第一个元素值大于5的索引位置:" + [1, 2, 13, 4, 5, 6, 7, 8, 9].findIndex((item) => { return item > 5 }));
        //符合条件true,return不在执行,返回返回符合测试条件的第一个数组元素索引;如果没有符合条件的则返回 -1。
        document.write("<br />");
        document.write("<hr />");

        //9.forEach()无返回值,会调用数组的每个元素,并将元素传递给回调函数。可以进行数组的遍历进行一些操作
        [1, 2, 13, 4, 5, 6, 7, 8, 9].forEach((item) => {
            // console.log(item);
        });
        //break和continue用法,通过 some 和 every 来实现。
        [1, 2, 13, 4, 5, 6, 7, 8, 9].some((item) => {
            if (item === 5) {
                return; //类似continue,元素值为5的跳过
            }
            // console.log(item);
        });
        [1, 2, 13, 4, 5, 6, 7, 8, 9].every((item) => {
            // console.log(item);
            return item !== 5;//元素值为5时不在执行
        });

        var fromArr = Array.from([1, 2, 13, 4, 5, 6, 7, 8, 9], (item) => { return item * 10 });
        document.write("10.数组[1,2,13,4,5,6,7,8,9]中元素值*10,得到的新数组fromArr:" + fromArr);
        //将Set集合转数组
        var setObj = new Set(["a", "b", "c"]);
        var objArr = Array.from(setObj);
        // console.log(objArr);
        document.write("<br />");
        document.write("<hr />");

        document.write("11.判断数组[1,2,13,4,5,6,7,8,9]中含有13,返回:" + [1, 2, 13, 4, 5, 6, 7, 8, 9].includes(13));
        document.write("<br />");
        document.write("判断数组[1,2,13,4,5,6,7,8,9]中第五个位置开始查找元素值为13,返回:" + [1, 2, 13, 4, 5, 6, 7, 8, 9].includes(13, 4));
        document.write("<br />");
        // 数组长度是3 fromIndex 是 -100  computed index 是 3 + (-100) = -97 计算出的索引小于 0,则整个数组都会被搜索。
        ['a', 'b', 'c'].includes('a', -100); // true
        ['a', 'b', 'c'].includes('b', -100); // true
        ['a', 'b', 'c'].includes('c', -100); // true
        document.write("当索引值为负数时,['a', 'b', 'c'].includes('a', -100):" + ['a', 'b', 'c'].includes('a', -100));
        document.write("<br />");
        document.write("<hr />");

        document.write("12.数组[1,2,13,4,5,6,7,2,9]中2出现的的索引值:" + [1, 2, 13, 4, 5, 6, 7, 2, 9].indexOf(2));
        document.write("<br />");
        document.write("indexOf(2,3):" + [1, 2, 13, 4, 5, 6, 7, 2, 9].indexOf(2, 3));
        document.write("<br />");
        document.write("<hr />");

        document.write("13.判断arr是否是数组,返回:" + Array.isArray(arr));
        document.write("<br />");
        document.write("<hr />");

        var joinArrStr = arr.join();
        document.write("14.arr以字符串拼接(逗号分隔),得joinArrStr:" + joinArrStr);
        document.write("<br />");
        document.write("改变分隔符:" + arr.join("--"));
        document.write("<br />");
        document.write("<hr />");

        var objKeysArr = Object.keys(arr) //返回的索引,可用于遍历数组
        objKeysArr.forEach((a, b, c) => {
            console.log(a, b, c);
            //a,b 0,0 1,1 2,2
            //c: ["0", "1", "2"]
        })
        // 创建对象
        var person = {
            name: 'tom',
            age: 20,
            sex: 1,
            school: "University",
            home: 'China'
        }
        // 用forEach()进行遍历对象属性
        var keys = Object.keys(person).forEach(e => {
            console.log("person ", e, ": ", person[e]);
        });
        var keysArr = arr.keys() //一个数组可迭代对象。
        document.write("15.arr.keys():" + keysArr);
        document.write("<br />");
        document.write("keysArr.next().value:" + keysArr.next().value + ", " + keysArr.next().value + ", " + keysArr.next().value + ", " + keysArr.next().value);//输出索引值,超出undefined
        document.write("<br />");
        document.write("<hr />");

        document.write("16.数组[1,2,13,4,5,6,7,2,9]中2出现的的索引值:" + [1, 2, 13, 4, 5, 6, 7, 2, 9].lastIndexOf(2));
        document.write("<br />");
        document.write("lastIndexOf(2,3):" + [1, 2, 13, 4, 5, 6, 7, 2, 9].lastIndexOf(2, 3));
        document.write("<br />");
        document.write("<hr />");

        var mapsArr = [1, 2, 13, 4, 5, 6, 7, 8, 9].map(e => {
            return e * 10;
        })
        document.write("17.将数组[1,2,13,4,5,6,7,8,9]中元素值*10:" + mapsArr);
        document.write("<br />");
        //一些使用的场景1:接口数据映射
        //从接口得到数据 res:
        var personArr = new Array(person)
        let r = personArr.map(item => {
            return {
                name: item.name,
                sex: item.sex === 1 ? '男' : item.sex === 0 ? '女' : '保密',
                age: item.age,
                school: item.school
            }
        });
        console.log(r);
        //省略return
        const users = personArr.map(item => ({
            name: item.name,
            sex: item.sex === 1 ? '男' : item.sex === 0 ? '女' : '保密',
            age: item.age,
            school: item.school
        })
        );
        var ls = ['1', '2', '3'].map(parseInt)
        console.log(ls)
        /*这里了解一下parseInt()函数
            parseInt(string, radix),接收两个参数。
                string:要转化的字符串。
                radix:要转化的进制数(将这个字符串转为多少进制的数,默认为 10,即将字符串转为十进制的数),radix 的范围 为 2-36的整数, 超出这个返回将返回 NaN。
            当 map() 中的函数可以接收参数时,map() 函数会自动把参数传递进去,所以三次执行顺序,parseInt() 接收的三次参数分别是:    
            [parseInt('1', 0), parseInt('2', 1), parseInt('3', 2)]
                => [1, NaN, NaN]

            radix:要转化的进制数(将这个字符串转为多少进制的数,默认为 10,即将字符串转为十进制的数),radix 的范围 为 2-36 的整数, 
                超出这个返回将返回 NaN。如果省略该参数或者为 0,则数字将以 10 为基础来解析。
            [parseInt('1', 0), parseInt('2', 1), parseInt('3', 2)] 
            => [parseInt('1', 10), parseInt('2', 1), parseInt('', 2)] 
            => [1, NaN, NaN] => [10进制1,超出2-36的范围NaN,parseInt中2进制string非1或0会被忽视NaN]
        */
        //通过自定义,查看执行过程 
        function myParseInt(str, radix) {
            console.log(str, radix)
            //1 0
            //2 1
            //3 2
        }
        l = ['1', '2', '3'].map(myParseInt)
        document.write("<hr />");

        var arrPop = arr.pop();
        document.write("18.删除arr最后一个元素并返回删除元素:" + arrPop);
        document.write("<br />");
        document.write("删除之后的arr数组:" + arr);
        document.write("<br />");
        document.write("<hr />");

        var arrPush = arr.push("vue3.0");
        document.write("19.在arr最后添加一个元素并返回新长度:" + arrPush);
        document.write("<br />");
        document.write("添加之后的arr数组:" + arr);
        document.write("<br />");
        var arrsPush = arr.push("C#", "typescript");
        document.write("在arr最后添加多个元素并返回新长度:" + arrsPush);
        document.write("<br />");
        document.write("添加之后的arr数组:" + arr);
        document.write("<br />");
        document.write("<hr />");

        var arrReduce = [1,2,13,4,5,6,7,2,9].reduce((total,num) => {
            console.log(total,num);
            return total + num;
        });
        document.write("20.计算数组[1,2,13,4,5,6,7,2,9]中元素值总和(从左往右):" + arrReduce);
        document.write("<br />");
        document.write("<hr />");

        var arrReduceRight = [1,2,13,40].reduceRight((total,num) => {
            console.log(total,num);
            return total - num;
        });
        document.write("21.计算数组[1,2,13,40]中从右到左,减去每个数组元素::" + arrReduceRight);
        document.write("<br />");
        document.write("<hr />");

        var reverseArr = arr.reverse();
        document.write("22.arr:" + arr);
        document.write("<br />");
        document.write("颠倒之后arr:" + reverseArr);
        document.write("<br />");
        //发现arr与reverseArr的值一样,说明调用reverse()方法之后改变原来的数组,而不会创建新的数组。
        document.write("<hr />");

        var arrShift = arr.shift();
        document.write("23.删除arr第一个元素并返回元素:" + arrShift);
        document.write("<br />");
        document.write("删除之后的arr数组:" + arr);
        document.write("<br />");
        document.write("<hr />");

        var sliceArr = arr.slice(1, 3); //得到的是arr[1],arr[2];等同于arr.slice(-3,-1)
        document.write("24.选定arr中:" + sliceArr);
        document.write("<br />");
        document.write("arr:" + arr);
        //arr没有改变,即slice()返回一个新的数组,没有改变原数组
        document.write("<br />");
        document.write("<hr />");

        var arrIsSome = [1,2,13,4,5,6,7,2,9].some(num => {
            return num > 10;
        });
        document.write("25.判断数组[1,2,13,4,5,6,7,2,9]中是否有大于10的数,返回:" + arrIsSome);
        document.write("<br />");
        document.write("<hr />");

        var sortArr = arr.sort();
        document.write("26.arr:" + arr);
        document.write("<br />");
        document.write("排序后的arr:" + sortArr);
        document.write("<br />");
        var arrNum = new Array(6)
        arrNum[0] = "10"
        arrNum[1] = "5"
        arrNum[2] = "40"
        arrNum[3] = "25"
        arrNum[4] = "1000"
        arrNum[5] = "1"
        document.write("arrNum:" + arrNum + "<br />")
        //如果对数字进行排序,单纯的使用sort()是没有效果的
        document.write("arrNum.sort()方式排序:" + arrNum.sort())
        document.write("<br />");
        //必须使用一个排序函数
        function sortNumber(a, b) {
            return a - b; //升序
        }
        document.write("arrNum.sort(sortNumber)加入排序函数进行升序序:" + arrNum.sort(sortNumber))
        document.write("<br />");
        document.write("简写,降序:" + arrNum.sort((a, b) => {
            return b - a;//降序
        }))
        document.write("<hr />");

        var spliceArr = arr.splice(2, 0, "C++"); //从 index 处开始,即将arr[2]添加新值
        document.write("27.arr.splice(2,0,\"C++\"):" + spliceArr);
        //这里得到的spliceArr为空,应为删除元素值为0
        document.write("<br />");
        document.write("在arr数组的第二个位置之后添加一个元素\"C++\",添加之后的数组:" + arr);
        document.write("<br />");
        //删除元素
        var spliceArr = arr.splice(2, 2, "IOT");
        document.write("删除的元素:" + spliceArr);
        document.write("<br />");
        document.write("arr:" + arr);
        document.write("<br />");
        document.write("<hr />");

        document.write("29.arr.toString():" + arr.toString());
        document.write("<br />");
        document.write("<hr />");


        document.write("30.arr.toLocaleString():" + arr.toLocaleString());
        document.write("<br />");
        document.write("<hr />");

        var arrUnshift = arr.unshift("vue3")
        document.write("31.arr开头添加一个元素,返回长度为:" + arrUnshift);
        document.write("<br />");
        document.write("arr:" + arr);
        document.write("<br />");
        document.write("<hr />");
    </script>

运行结果:

################################### Array 数组赋值
arr:java,vue,js
arr1:C,C++,C#
arr2:java,vue,js
################################### Array 访问数组
获取arr第一个元素:java
修改后的arr:java,vue,C#
################################### Array 对象属性
This is an Array
arr的元素个数:3
################################### Array 对象方法
1、arr与arr1拼接之后的数组:java,vue,C#,C,C++,C#
2、复制拼接后的数组的前面两个元素到第三和第四个位置上:java,vue,java,vue,C++,C#
[1,2,3,4,5,6,7].copyWithin(3)1,2,1,2,3,4,5
3、arr.entries()[object Array Iterator]
4、空数组的every()方法返回:true
判断arr:java,vue,C# 中元素长度是否都小于3false
判断arr中元素是否都为vue:false
5.使数组[1, 2, 3, 4, 5, 6, 7, 8, 9]中元素都为vue, arr:vue,vue,vue,vue,vue,vue,vue,vue,vue
使数组[1,2,3,4,5,6,7,8,9]第三元素到第六个元素值都为101,2,10,10,10,10,7,8,9
6.返回数组[1,2,3,4,5,6,7,8,9]中元素值大于5, filterArr:6,7,8,9
数组[56, 15, 48, 3, 7]中元素值为偶数, newArr:56,48
将数组[1,1,'RUNOOB','RUNOOB',true,true,15]中元素去重得到的新数组, filterArr2:1,RUNOOB,true,15
7.返回数组[1,2,13,4,5,6,7,8,9]中从索引开始第一个元素值大于5的元素值:13
8.返回数组[1,2,13,4,5,6,7,8,9]中从索引开始第一个元素值大于5的索引位置:2
10.数组[1,2,13,4,5,6,7,8,9]中元素值*10,得到的新数组fromArr:10,20,130,40,50,60,70,80,90
11.判断数组[1,2,13,4,5,6,7,8,9]中含有13,返回:true
判断数组[1,2,13,4,5,6,7,8,9]中第五个位置开始查找元素值为13,返回:false
当索引值为负数时,['a', 'b', 'c'].includes('a', -100)true
12.数组[1,2,13,4,5,6,7,2,9]2出现的的索引值:1
indexOf(2,3)7
13.判断arr是否是数组,返回:true
14.arr以字符串拼接(逗号分隔),得joinArrStr:java,vue,C#
改变分隔符:java--vue--C#
15.arr.keys()[object Array Iterator]
keysArr.next().value:0, 1, 2, undefined
16.数组[1,2,13,4,5,6,7,2,9]2出现的的索引值:7
lastIndexOf(2,3)1
17.将数组[1,2,13,4,5,6,7,8,9]中元素值*1010,20,130,40,50,60,70,80,90
18.删除arr最后一个元素并返回删除元素:C#
删除之后的arr数组:java,vue
19.在arr最后添加一个元素并返回新长度:3
添加之后的arr数组:java,vue,vue3.0
在arr最后添加多个元素并返回新长度:5
添加之后的arr数组:java,vue,vue3.0,C#,typescript
20.计算数组[1,2,13,4,5,6,7,2,9]中元素值总和(从左往右)49
21.计算数组[1,2,13,40]中从右到左,减去每个数组元素::24
22.arr:typescript,C#,vue3.0,vue,java
颠倒之后arr:typescript,C#,vue3.0,vue,java
23.删除arr第一个元素并返回元素:typescript
删除之后的arr数组:C#,vue3.0,vue,java
24.选定arr中:vue3.0,vue
arr:C#,vue3.0,vue,java
25.判断数组[1,2,13,4,5,6,7,2,9]中是否有大于10的数,返回:true
26.arr:C#,java,vue,vue3.0
排序后的arr:C#,java,vue,vue3.0
arrNum:10,5,40,25,1000,1
arrNum.sort()方式排序:1,10,1000,25,40,5
arrNum.sort(sortNumber)加入排序函数进行升序序:1,5,10,25,40,1000
简写,降序:1000,40,25,10,5,1
27.arr.splice(2,0,"C++"):
在arr数组的第二个位置之后添加一个元素"C++",添加之后的数组:C#,java,C++,vue,vue3.0
删除的元素:C++,vue
arr:C#,java,IOT,vue3.0
29.arr.toString()C#,java,IOT,vue3.0
30.arr.toLocaleString()C#,java,IOT,vue3.0
31.arr开头添加一个元素,返回长度为:5
arr:vue3,C#,java,IOT,vue3.0

Array 方法(附)

Array 对象方法:
1.concat()	        连接两个或更多的数组,并返回结果。
    该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
    语法:arrayObject.concat(arrayX,arrayX,......,arrayX)。其中,参数arrayX 必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。
    返回值:返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。
2.copyWithin()	    从数组的指定位置拷贝元素到数组的另一个指定位置中。  
    语法:array.copyWithin(target, start, end)
        参数	    描述
        target	必需。复制到指定目标索引位置。
        start	可选。元素复制的起始位置。
        end	    可选。停止复制的索引位置 (默认为 array.length)。如果为负值,表示倒数。
    返回值:Array
3.entries()	        返回数组的可迭代对象。
    该对象包含数组的键值对 (key/value)。迭代对象中数组的索引值作为 key, 数组元素作为 value。
    语法:array.entries()
    返回值:数组迭代对象
4.every()	            检测数值元素的每个元素是否都符合条件。
    使用指定函数检测数组中的所有元素:
        1.如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
        2.如果所有元素都满足条件,则返回 true。
    注:
        1.every() 不会对空数组进行检测。
        2.every() 不会改变原始数组。
    语法:array.every(function(currentValue,index,arr), thisValue)
        参数	                                描述
        function(currentValue, index,arr)	必须。函数,数组中的每个元素都会执行这个函数
                                            function函数参数如下:
                                            currentValue	必须。当前元素的值
                                            index	        可选。当前元素的索引值
                                            arr	            可选。当前元素属于的数组对象
        thisValue	可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
    返回值:	布尔值。如果所有元素都通过检测返回 true,否则返回 false5.fill()	            使用一个固定值来填充数组。
    语法:array.fill(value, start, end)
        参数	    描述
        value	必需。填充的值。
        start	可选。开始填充位置。
        end	    可选。停止填充位置 (默认为 array.length)
    返回值:array
6.filter()	        检测数值元素,并返回符合条件所有元素的数组。
    创建一个新的数组
    语法:array.filter(function(currentValue,index,arr), thisValue)
        参数	                                描述
        function(currentValue, index,arr)	必须。函数,数组中的每个元素都会执行这个函数
                                            function函数参数如下:
                                            currentValue	必须。当前元素的值
                                            index	        可选。当前元素的索引值
                                            arr	            可选。当前元素属于的数组对象
        thisValue	可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
    返回值:返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。
    注:
        1.filter() 不会对空数组进行检测。
        2.filter() 不会改变原始数组。
7.find()	            返回符合传入测试(函数)条件的数组元素。
    find() 方法为数组中的每个元素都调用一次函数执行:
        当数组中的元素在测试条件时返回 true, find() 返回符合条件的元素,之后的值不会再调用执行函数。
        如果没有符合条件的元素返回 undefined
    语法:array.find(function(currentValue,index,arr), thisValue)
        参数	                                描述
        function(currentValue, index,arr)	必须。函数,数组中的每个元素都会执行这个函数
                                            function函数参数如下:
                                            currentValue	必须。当前元素的值
                                            index	        可选。当前元素的索引值
                                            arr	            可选。当前元素属于的数组对象
        thisValue	可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
    返回值:返回符合测试条件的第一个数组元素值,如果没有符合条件的则返回 undefined。
    注:
        1.find() 对于空数组,函数是不会执行的。
        2.find() 并没有改变数组的原始值。
8.findIndex()	        返回符合传入测试(函数)条件的数组元素索引。
   findIndex() 方法为数组中的每个元素都调用一次函数执行:
        当数组中的元素在测试条件时返回 true, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。
        如果没有符合条件的元素返回 -1
    语法:array.findIndex(function(currentValue,index,arr), thisValue)
        参数	                                描述
        function(currentValue, index,arr)	必须。函数,数组中的每个元素都会执行这个函数
                                            function函数参数如下:
                                            currentValue	必须。当前元素的值
                                            index	        可选。当前元素的索引值
                                            arr	            可选。当前元素属于的数组对象
        thisValue	可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
    返回值:返回符合测试条件的第一个数组元素索引,如果没有符合条件的则返回 -1。
    注:
        1.findIndex() 对于空数组,函数是不会执行的。
        2.findIndex() 并没有改变数组的原始值。
9.forEach()	        数组每个元素都执行一次回调函数。
    语法:array.forEach(function(currentValue, index, arr), thisValue)
        参数	                                描述
        function(currentValue, index,arr)	必须。函数,数组中的每个元素都会执行这个函数
                                            function函数参数如下:
                                            currentValue	必须。当前元素的值
                                            index	        可选。当前元素的索引值
                                            arr	            可选。当前元素属于的数组对象
        thisValue	可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
    返回值:undefined
    注: forEach() 对于空数组是不会执行回调函数的。
    forEach() 本身是不支持的 continuebreak 语句的,我们可以通过 some 和 every 来实现。使用 return 语句实现 continue 关键字的效果。
10.from()	            通过给定的对象中创建一个数组。
    通过拥有 length 属性的对象或可迭代的对象来返回一个数组。如果对象是数组返回 true,否则返回 false。
    语法:Array.from(object, mapFunction, thisValue)
        参数	    描述
        object	    必需,要转换为数组的对象。
        mapFunction	可选,数组中每个元素要调用的函数。
        thisValue	可选,映射函数(mapFunction)中的 this 对象。
    返回值:数组对象。
11.includes()	        判断一个数组是否包含一个指定的值。
    语法:
        1.arr.includes(searchElement)
        2.arr.includes(searchElement, fromIndex)
            searchElement	必须。需要查找的元素值。
            fromIndex	    可选。从该索引处开始查找 searchElement。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜索。默认为 0。
    返回值:布尔值。如果找到指定值返回 true,否则返回 false。
    注:
        1.如果fromIndex 大于等于数组长度 ,则返回 false 。该数组不会被搜索:
        2.如果 fromIndex 为负值,计算出的索引将作为开始搜索searchElement的位置。如果计算出的索引小于 0,则整个数组都会被搜索。
12.indexOf()	        搜索数组中的元素,并返回它所在的位置。
    该方法将从头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。
        如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。
        如果在数组中没找到指定元素则返回 -1。
    语法:array.indexOf(item,start)
        item	必须。查找的元素。
        start	可选的整数参数。规定在数组中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。
    返回值:number 元素在数组中的位置,如果没有搜索到则返回 -113.isArray()	        判断对象是否为数组。
    如果对象是数组返回 true,否则返回 false。
    语法:Array.isArray(obj)
    返回值:布尔值,如果对象是数组返回 true,否则返回 false14join()	            把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
    语法:arrayObject.join(separator)。其中,参数separator 可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。
    返回值:返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 separator 字符串而生成的。
15.keys()	            返回数组的可迭代对象,包含原始数组的键(key)。
    语法:array.keys()
    返回值:一个数组可迭代对象。
16.lastIndexOf()	    搜索数组中的元素,并返回它最后出现的位置。
    与indexOf,只是开始索引值为从后往前
    语法:array.lastIndexOf(item,start)
17.map()	            通过指定函数处理数组的每个元素,并返回处理后的数组。
    map() 方法按照原始数组元素顺序依次处理元素。
    语法:array.map(function(currentValue,index,arr), thisValue)
        function(currentValue, index,arr)	必须。函数,数组中的每个元素都会执行这个函数
                                            函数            参数:
                                            参数	        描述
                                            currentValue	必须。当前元素的值
                                            index	        可选。当前元素的索引值
                                            arr	            可选。当前元素属于的数组对象
        thisValue   可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
                        如果省略了 thisValue,或者传入 nullundefined,那么回调函数的 this 为全局对象。
    返回值:返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
    注:
        1.map() 不会对空数组进行检测。
        2.map() 不会改变原始数组。
18.pop()	            删除并返回数组的最后一个元素
    语法:arrayObject.pop()
    返回值:arrayObject 的最后一个元素。
    说明:pop() 方法将删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值。
19.push()	            向数组的末尾添加一个或更多元素,并返回新的长度。
    语法:arrayObject.push(newelement1,newelement2,....,newelementX)
        参数	            描述
        newelement1	    必需。要添加到数组的第一个元素。
        newelement2	    可选。要添加到数组的第二个元素。
        newelementX	    可选。可添加多个元素。    
    返回值:把指定的值添加到数组后的新长度。(改变数组的长度)
    说明:push() 方法可把它的参数顺序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是创建一个新的数组。push() 方法和 pop() 方法使用数组提供的先进后出栈的功能。     
20.reduce()	    将数组元素计算为一个值(从左到右)。
	reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
    reduce() 可以作为一个高阶函数,用于函数的 compose。
    语法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
        function(total,currentValue, index,arr)	必需。用于执行每个数组元素的函数。
                                                函数参数:
                                                参数	        描述
                                                total	        必需。初始值, 或者计算结束后的返回值。
                                                currentValue	必需。当前元素
                                                currentIndex	可选。当前元素的索引
                                                arr	            可选。当前元素所属的数组对象。
        initialValue	可选。传递给函数的初始值
    返回值:返回计算结果
    注: reduce() 对于空数组是不会执行回调函数的。
21.reduceRight()	    将数组元素计算为一个值(从右到左)。     
    reduceRight() 方法的功能和 reduce() 功能是一样的,不同的是 reduceRight() 从数组的末尾向前将数组中的数组项做累加。 
22.reverse()	        颠倒数组中元素的顺序。
    语法:arrayObject.reverse()
    注:该方法会改变原来的数组,而不会创建新的数组。
23.shift()	            删除并返回数组的第一个元素
    语法:arrayObject.shift()
    返回值:数组原来的第一个元素的值。(改变数组的长度)
    说明:如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值。请注意,该方法不创建新数组,而是直接修改原有的 arrayObject。
24.slice()	            从某个已有的数组返回选定的元素
    语法:arrayObject.slice(start,end)
        参数	            描述
        start	    必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
        end	        可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。
                        如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
    返回值:返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
    说明:该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。
    注:
        1.可使用负值从数组的尾部选取元素。
        2.如果 end 未被规定,那么 slice() 方法会选取从 start 到数组结尾的所有元素。
25.some()	            检测数组元素中是否有元素符合指定条件。
    some() 方法会依次执行数组的每个元素:
        如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
        如果没有满足条件的元素,则返回false。
    语法:array.some(function(currentValue,index,arr),thisValue)
        function(currentValue, index,arr)	必须。函数,数组中的每个元素都会执行这个函数
                                            函数            参数:
                                            参数	        描述
                                            currentValue	必须。当前元素的值
                                            index	        可选。当前元素的索引值
                                            arr	            可选。当前元素属于的数组对象
        thisValue	可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"
    返回值:	布尔值。如果数组中有元素满足条件返回 true,否则返回 false。
    注:
        1. some() 不会对空数组进行检测。
        2. some() 不会改变原始数组。
26.sort()	            对数组的元素进行排序
    语法:arrayObject.sort(sortby)。参数sortby 可选。规定排序顺序。必须是函数。
    返回值:对数组的引用。请注意,数组在原数组上进行排序,不生成副本。
    说明:
        1.如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。
            要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
        2.如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。
            比较函数应该具有两个参数 a 和 b,其返回值如下:
            若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
            若 a 等于 b,则返回 0。
            若 a 大于 b,则返回一个大于 0 的值。
27.splice()	        删除元素,并向数组添加新元素。
    语法:arrayObject.splice(index,howmany,item1,.....,itemX)
        参数	                描述
        index	            必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
        howmany	            必需。要删除的项目数量。如果设置为 0,则不会删除项目。
        item1, ..., itemX	可选。向数组添加的新项目。
    返回值:Array,包含被删除项目的新数组(当howmany不为0)说明:splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。
        如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。
    注:splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。
28.toSource()	        返回该对象的源代码。
    该原始值由 Array 对象派生的所有对象继承。toSource() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中。
    语法:object.toSource()
    浏览器支持:只有 Gecko 核心的浏览器(比如 Firefox)支持该方法,也就是说 IE、Safari、Chrome、Opera 等浏览器均不支持该方法。
29.toString()	        把数组转换为字符串,并返回结果。
    语法:arrayObject.toString()
    返回值:arrayObject 的字符串表示。返回值与没有参数的 join() 方法返回的字符串相同。
    说明:当数组用于字符串环境时,JavaScript 会调用这一方法将数组自动转换成字符串。但是在某些情况下,需要显式地调用该方法。
    注:显示方式-数组中的元素之间用逗号分隔。
30.toLocaleString()	把数组转换为本地数组,并返回结果。
    语法:arrayObject.toLocaleString()
    返回值:arrayObject 的本地字符串表示。
    说明:首先调用每个数组元素的 toLocaleString() 方法,然后使用地区特定的分隔符把生成的字符串连接起来,形成一个字符串。
31.unshift()	        向数组的开头添加一个或更多元素,并返回新的长度。
    语法:arrayObject.unshift(newelement1,newelement2,....,newelementX)
            参数	    描述
        newelement1	必需。向数组添加的第一个元素。
        newelement2	可选。向数组添加的第二个元素。
        newelementX	可选。可添加若干个元素。
    返回值:arrayObject 的新长度。
    说明:unshift() 方法将把它的参数插入 arrayObject 的头部,并将已经存在的元素顺次地移到较高的下标处,以便留出空间。
        该方法的第一个参数将成为数组的新元素 0,如果还有第二个参数,它将成为新的元素 1,以此类推。
    注:
        1.unshift() 方法不创建新的创建,而是直接修改原有的数组。
        2.会改变数组长度
        3.unshift() 方法无法在 Internet Explorer 中正确地工作!
32.valueOf()	        返回数组对象的原始值
    该原始值由 Array 对象派生的所有对象继承。valueOf() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中。
    语法:arrayObject.valueOf()

学习时间

2021-08-27
2021-08-29


总结

附:学习记录
JavaScript Array

JavaScript Array2

MDN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sean*Jin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值