JavaScript基础--数组

什么是数组:

数组是一系列数据的集合--也就是我们把一些数据放在一个盒子里面,按照顺序排好,这个东西就是一个数组,存储着一些数据的集合

例如:[100,200,'hello','javascript']

数组基础

(1)数据类型

  • 基本数据类型:number / string / boolean / undefined / null
  • 复杂数据类型: Object / Function  /  Array  / ...

(2)创建一个数组

  • 字面量方式:
  1. 创建空数组:var  arr = [ ]
  2. 创建有内容的数组: var arr = [10,20,30,40,50]
  • 构造函数方式
  1. 创建空数组:var arr = new Array ( )
  2. 创建有内容的数组: var arr = new Array(10,20,30,40,50)
  3. 创建一个长度为10的数组: var arr = new Array(10)

(3)数组的长度

  •  length 就是表示数组的长度,数组里面有多少个成员,length 就是多少
<script>
    var arr = [10, 20, 30, 40, 50]
    console.log(arr.length)  // 5
</script>

 (4)数组的索引

  • 索引,也叫做下标,是指一个数据在数组里面排在第几
  • 注意: 在所有的语言里面,索引都是从 0 开始的
<script>
    var arr = ['hello', 'world', 'javascript']
    console.log(arr[0])  // hello
    console.log(arr[1])  // world
    console.log(arr[2])  // javascript
</script>

 (5)数组的遍历

  • 数组的索引就可以获取数组中的内容
  • 数组的索引又是按照 0 ~ n 顺序排列
  • 我们就可以使用 for 循环来循环数组,因为 for 循环我们也可以设置成 0 ~ n 顺序增加

 例如:依次打印出数组arr[10,20,30,40,50]的内容

    <script>
        var arr = [10, 20, 30, 40, 50]
        for (var i = 0; i < arr.length; i++) {
            console.log(arr[i])
        }
    </script>

 数组的常用方法

 (1)push

  • 用来在数组的末尾追加一个元素
    <script>
        var arr = [10, 20, 30]
        arr.push(40)
        console.log(arr)  // [10,20,30,40]
    </script>

 (2)pop

  • 用来删除数组末尾的一个元素
    <script>
        var arr = [10, 20, 30]
        arr.pop()
        console.log(arr)  // [10,20]
    </script>

(3)unshift

  • 用来在数组的最前面添加一个元素
    <script>
        var arr = [10, 20, 30]
        arr.unshift(40)
        console.log(arr)  // [40,10,20,30]
    </script>

(4)shift

  • 用来删除数组最前面的一个元素
    <script>
        var arr = [10, 20, 30]
        arr.shift()
        console.log(arr)  // [20,30]
    </script>

(5)splice

  • 截取数组中的某些内容,按照数组的索引来截取
  • 语法: splice(从哪一个索引位置开始,截取多少个,替换的新元素) (第三个参数可以不写)
    <script>
        var arr = [10, 20, 30, 40, 50]
        arr.splice(3, 2, '新内容')
        console.log(arr)  // [10,20,30,'新内容']
    </script>

(6)reverse

  • 用来反转数组
    <script>
        var arr = [10, 20, 30, 40, 50]
        arr.reverse()
        console.log(arr)  // [50,40,30,20,10]
    </script>

 (7)sort

  • 用来给数组排序的
  • 当数组内容全是个位数时:
    <script>
        var arr = [3, 6, 4, 1, 8, 9]
        arr.sort()
        console.log(arr)  // [1,3,4,6,8,9]
    </script>
  •  当数组内容全是个位数时:
    <script>
        var arr = [3, 66, 34, 1, 28, 9]
        // 从小到大排列
        arr.sort(function (a, b) {
            return a - b
        })
        console.log(arr)  //  [1, 3, 9, 28, 34, 66]
        // 从大到小排列
        arr.sort(function (a, b) {
            return b - a
        })
        console.log(arr)  //  [66, 34, 28, 9, 3, 1]
    </script>

 (8)concat

  • 把多个数组进行拼接
  • 不会改变原始数组,会返回一个新数组
    <script>
        var arr1 = [1, 2, 3]
        var arr2 = [4, 5, 6]
        var newArr = arr1.concat(arr2)
        console.log(newArr)  //  [1, 2, 3, 4, 5, 6]
    </script>

 (9)join

  • 把数组里面的每一项内容链接起来,变成一个字符串
  • 不会改变原始数组,而是把链接好的字符串返回
    <script>
        var arr = [1, 2, 3]
        var str = arr.join('-')
        console.log(arr)  //  [1, 2, 3]
        console.log(str)  //  1-2-3
    </script>

 (10)indexOf      

        用来找到数组中某一项的索引

    <script>
        var arr = [1, 2, 3]
        var index = arr.indexOf(2)
        console.log(index)  //  1
    </script>

 数组遍历方法

  • forEach遍历数组

        var arr = [10,20,30]

        arr.forEach(function(item,index,arr){

                console.log(item)  //依次输出数组的每一项

                console.log(index)  //依次输出数组每一项的索引号

         })

  • map可以对数组每一项进行操作,返回一个新数组

        var arr = [10,20,30]

        var newArr = arr.map(function(item,index,arr){

                return item+10

        })

        console.log(newArr)   //  [20,30,40]

  • filter按照条件进行筛选,返回一个新数组

        var arr = [10, 20, 30]

        var newArr = arr.filter(function (item, index, arr) {

                return item > 10

        })

        console.log(newArr)   //  [20,30]

  • find按照条件进行筛选,返回第一个满足条件的项

        var arr = [10, 20, 30]

        var newItem = arr.find(function (item, index, arr) {

                return item > 10

        })

        console.log(newItem)   //  20

  • every查找数组中是否每个元素都满足指定条件,都满足返回true否则返回false

        var arr = [10, 20, 30]

        var isOk = arr.every(function (item, index, arr) {

             return item >= 10

        })

        console.log(isOk)    // true

  •  some查找数组中是否有元素都满足指定条件,只要有一个满足条件就返回true否则返回false

        var arr = [10, 20, 30]

        var isOk = arr.some(function (item, index, arr) {

             return item > 20

        })

        console.log(isOk)   //  true

  • reduce接收一个方法作为累加器,数组中每个值从左往右开始合并,最终为一个值

        var arr = [10, 20, 30]

        var sum = arr.reduce(function (s, item, index) {

             return s + item

        }, 0)

        console.log(sum)    //  60

数组的排序

  •  排序,就是把一个乱序的数组,通过我们的处理,让他变成一个有序的数组

(1)冒泡排序

        基本思想

  1. 先遍历数组,让挨着的两个进行比较,如果前一个比后一个大,那么就交换位置
  2. 数组遍历一遍以后,最后一个数字就是最大的数
  3. 然后进行第二遍的遍历,还是按照之前的规则,第二大的数字就会跑到倒数第二的位置
  4. 以此类推,最后就会按照顺序把数组排好了

        使用方法

    <script>
        var arr = [76, 44, 98, 38, 99, 21]
        var n = arr.length
        // 外层循环,冒泡次数
        for (var i = 0; i < n - 1; i++) {
            // 内循环,交换元素
            for (var j = 0; j < n - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    var temp = arr[j]
                    arr[j] = arr[j + 1]
                    arr[j + 1] = temp
                }
            }
        }
        console.log(arr)    // [21, 38, 44, 76, 98, 99]
    </script>

(2)选择排序

        基本思想

  • 在要排序的一组数中,选出最小的一个数与第一个位置的数交换
  • 在剩下的数当中再找最小的与第二个位置的数交换
  • 如此循环到倒数第二个数和最后一个数比较为止

       使用方法

    <script>
        var arr = [39, 49, 22, 98, 33, 54, 23]
        var n = arr.length
        // 外层循环排序次数
        for (var i = 0; i < n - 1; i++) {
            var minIndex = i
            // 内层循环找最小数并记录其位置
            for (var j = i + 1; j < n; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j
                }
            }
            var temp = arr[i]
            arr[i] = arr[minIndex]
            arr[minIndex] = temp
        }
        console.log(arr)  // [22, 23, 33, 39, 49, 54, 98]
    </script>

数组去重

        使用数组indexOf()方法实现

  1. 定义一个空数组newArr,用于存储不重复的数组元素
  2. 循环遍历原数组
  3. 判断新数组中是否有原数组元素,没有就放入
    <script>
        var arr = [10, 20, 30, 10, 20, 10, 20, 10, 10]
        var newArr = []
        for (var i = 0; i < arr.length; i++) {
            if (newArr.indexOf(arr[i]) == -1) {
                newArr.push(arr[i])
            }
        }
        console.log(newArr)  // [10, 20, 30]
    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
JavaScript数组是一种数据结构,它可以用来存储一组数据。数组可以包含任意类型的元素,包括字符串、数字、布尔值等。创建数组的方式有多种,可以使用`new Array()`语法、`new Array(长度)`语法、数组字面量`[]`以及数组字面量`[数据]`。在数组中,可以使用下标来访问和赋值元素。数组的下标是从0开始递增的,可以通过`数组名[下标值]`的方式来获取指定下标的元素。 下面是一些关于JavaScript数组的基本操作: 1. 创建数组:可以使用`new Array()`语法、`new Array(长度)`语法,或者使用数组字面量`[]`来创建一个空数组或带有初始值的数组。 2. 访问数组元素:可以使用下标值来获取数组中指定下标的元素,例如`数组名[下标值]`。 3. 赋值数组元素:可以通过下标值来给数组中指定下标的元素赋值,例如`数组名[下标值] = 数据`。 4. 数组的长度:可以使用`数组名.length`来获取数组的长度,即数组中元素的个数。 5. 删除数组元素:可以使用`delete`关键字来删除数组中指定下标的元素,例如`delete 数组名[下标值]`。 综上所述,JavaScript数组是一种非常常用的数据结构,它可以按照下标值来访问和赋值元素,并提供了丰富的方法和属性来操作和管理数组中的数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [JavaScript基础——数组](https://blog.csdn.net/weixin_44757417/article/details/107401355)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【JavaScript】1.JavaScript数组](https://blog.csdn.net/weixin_46293452/article/details/130000584)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

柠檬味D

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

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

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

打赏作者

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

抵扣说明:

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

余额充值