JavaScript,难点来啦,数组

2,364 阅读2分钟

数组的概念

数组就是一组数(一般来说,数据类型一样),相当于一次性定义了很多相同数据类型的变量,如果说单个变量是一个小容器,数组就是有多个格档的大容器(每个格档是个小容器)。
也就是存储一组相同的数据类型的数据
例如定义一个数组:var arr = [1,2,3];(字面量声明)
数组下标----访问数组的值的方法:arr[index]
注意:下标是从0开始
数组的长度----arr.length(可以随时被更改)
例如:

var arr = [1,2,3] ;
console.log(arr[10]);  // 此时arr[10]没有被赋值,undefined
// [1,2,3,,,,,,,20]
// 实际上变相的加长了数组的长度
arr[10] = 20 ;
console.log(arr[10]);
console.log(arr.length);  // 赋值后数组的长度就发生了改变

数组的声明

  1. 字面量声明:var arr = [1,2,3]
  2. 实例化一个对象: var arr = new Array(1,2,3) ;( Array构造函数(用于创建对象的),当Array只有一个参数的时候,表示数组的长度) 例如:声明一个数组存入10个数:
//定义一个空数组
var arr = [];
        for (var i = 0; i < 10; i++) {
        //存入值
            arr[i] =i ;
        }
        console.log(arr)//打印[0,1,2,3,4,5,6,7,8,9]

数组的遍历

遍历:读取数组中的每一个值。
普通循环遍历

//普通循环遍历,读取数据中的每个值
        for(var i = 0 ; i < arr.length ; i++) {
            console.log(arr[i]);
        }

for in(用于遍历对象的角标---bug(自动过滤空值))

  for in  用于遍历对象的角标 -- bug(自动过滤掉空值)
        for(var i in arr) {
            console.log(arr[i]);
        }

for of (遍历对象 的值value)

 for (var v of arr) {
            console.log(v);
        }

应用:找到数组中的最大值:思路就是,相当于假设法,先定义一个值,把他当做最大值,然后与数组中的值一一比较,比他大的话,大值就赋值赋值给他,直到比较完。

  <script>
        //给找出数组的最大值封装一个函数,参数arr为数组
        function ismax(arr) {
            //其思想也相当于假设法,先定义一个值,作为最大值,然后与数组中的值一一比较
            for (var i = 0, max = 0; i < arr.length; i++) {
                if (max < arr[i]) {
                    max = arr[i];
                }
            }
            return max
        }
        console.log(ismax([1, 2, 4, 5, 6, 3]));
    </script>

数组的基本方法:

push(v1,v2,v3...) 向数组尾部追加值
pop() 在数组尾部删除一个值
unshift() 向数组的头部追加值
shift() 向数组的头部删除一个值
这里必须要提一提伪数组arguments的用法:
一般情况下,使用形参来接受实参的值, 但是可以使用arguments来接受实参
例如封装上面所说的数组的方法push

var arr = [1, 2, 3, 4, 5]
            //给push封装,向数组尾部追加值
            function push() {
                //arguments 伪数组,遍历伪数组,存入arr中,每循环一次,arr.length的值会加一。进而可以存值
                for (var i = 0; i < arguments.length; i++) {
                    arr[arr.length] = arguments[i];
                }
                console.log(arr);
            }
            push(6, 7, 'hello', 'hi')//[1,2,3,4,5,6,7, 'hello', 'hi']

封装上面所说的数组的方法pop:

var arr = [1, 2, 3, 4, 5]
//给pop封装,在数组尾部删除一个值
        function pop() {
        //定义一个空数组arr1
            var arr1 = [];
            //遍历除去最后一个数的arr数组,并加到空数组中
            for (var i = 0; i < arr.length - 1; i++) {
                arr1.push(arr[i])
            }
            console.log(arr1)
        }
        pop()//[1,2,3,4]

封装上面所说的数组的方法unshift:

var arr = [1, 2, 3, 4, 5]
 //给unshift封装,向数组的头部追加值
        function unshift() {
            var arr3 = [];
            for (var i = 0; i < arguments.length; i++) {
                arr3[arr3.length] = arguments[i];
            }
            for (i = 0; i < arr.length; i++) {
                arr3.push(arr[i])
            }
            console.log(arr3)
        }
        unshift('a', 'b', 8)//['a', 'b', 8,1,2,3,4,5]

封装上面所说的数组的方法shift:

var arr = [1, 2, 3, 4, 5]
给shift封装,向数组头部删除一个值
        function shift() {
            var arr2 = [];
            //遍历除去第一个数的数组arr
            for (var i = 1; i < arr.length; i++) {
                arr2.push(arr[i])
            }
            console.log(arr2)
        }
        shift()//[2,3,4,5]

数组的排序方式:

  1. 冒泡排序
  2. 选择排序 相信这是很多小白的第一个小难点,单独拿一篇博客来说