对象和数组

103 阅读3分钟

- 对象

- 引用数据类型

  • 存储基本数据类型的集合
  • 1.键值对 2.key/value 3.属性名:属性值

- 对象的操作

- 创建

  • var obj1 = {} console.log(obj1) <==字面量构造
  • var obj2 = new Object() console.log(obj2) <==内置构造函数

- 操作

    • 点语法:对象名.新的属性名 = 对应的属性值 :obj.age = 18 - 中括号语法:对象名['要新增的属性名'] = 对应的属性值 :obj['age'] = 18
    • 点语法:delete 对象名.要删除的属性名 :delete obj.id
    • 中括号语法:delete 对象名['要删除的属性名'] : delete obj['id']
    • 点语法:对象名.要修改属性值的属性名 = 新的属性值 :obj.name = 'Mary'
    • 中括号语法:对象名['要修改的属性名'] = 新的属性值 : obj['name'] = 'Lisa'
    • 点语法:对象名.要查询的属性名 : console.log(obj.name)
    • 中括号语法:对象名['要查询的属性名'] : console.log(obj['name'])

- 数组

- 创建

  • var arr1 = {} console.log(arr1)<== 字面量构造 ==> 使用场景较多
  • var arr2 = new Array() console.log(arr2)<==内置构造函数

- 长度:length

  • 数组的长度取决于内部有多少元素
  • 下标
  • 从0开始

- 常用算法

- 冒泡排序

js
复制代码
var a = [20, 17, 16, 4, 9, 3, 7];

        for (var i = 0; i < a.length - 1; i++) {

            for (var j = 0; j < a.length - 1 - i; j++) {

                if (a[j] > a[j + 1]) {

                    var temp = a[j];

                    a[j] = a[j + 1];

                    a[j + 1] = temp;

                }

            }

        }

- 选择排序

js
复制代码
var a = [20, 17, 16, 4, 9, 3, 7];

        for (var i = 0; i < a.length - 1; i++) {

            var min = i;

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

                if (a[j] < a[min])

                    min = j;

            }

            var temp = a[i];

            a[i] = a[min];

            a[min] = temp;

        }

        console.log(a);

- 数组方法

js
复制代码
// 1.push 在数组后面追加元素,返回值是长度

        console.log(arr.push(9));

        console.log(arr)

        //函数

        function push(a, num) {

            a[a.length] = num;

            return a.length;

        }

        console.log(push(arr, 'we'));

        console.log(arr)
js
复制代码
// 2.pop 在数组后面删除元素,返回删除的元素  返回值一般不用

        console.log(arr.pop());

        console.log(arr)

        // 函数

        function pop(a) {

            var temp = a[a.length - 1]

            //删除后值没了 长度不变

            delete a[a.length - 1]

            //位置变了 值变了

            a.length -= 1

            return temp;

        }

        console.log(pop(arr))
js
复制代码
//3.unshift 在数组前面追加元素,返回数组长度

        console.log(arr.unshift(2));

        console.log(arr)

        // 函数

        var a1 = [1, 2, 3]

        function unshift(a, data) {

            // 一个新的数组来存值

            var b = [data];

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

                b[i + 1] = a[i]

            }

            return {

                arr: b,

                len: b.length

            }

        }

        var r = unshift(a1, 'xixi')

        console.log(r)
js
复制代码
// 4.shift 在数组前面删除元素  返回删除的元素

        var a2 = [ 1, 2, 3]

        console.log(a2.shift());

        function shift(a) {

            var temp = a[0]

            for (var i = 0; i <= a.length - 1; i++)

                a[i] = a[i + 1]

            a.length -= 1

            return temp

        }

        var r2 = shift(a2)

        console.log(r2)
js
复制代码
// 5.reverse 反转数组,返回反转后的数组  会改变原数组

        var arr3 = [1,2,3,4,5,6]

        console.log(arr3.reverse())

        function reverse(a) {

            // 从头开始 到中间停止 前后交换

            for (var i = 0; i < a.length / 2; i++) {

                var temp = a[i]

                a[i] = a[a.length - 1 - i]

                a[a.length - 1 - i] = temp

            }

            return a

        }

        var r1 = reverse(arr3)

        console.log(r1)
  • 6.sort 排序 // 开发的时候,没有特别要求使用sort // 面试的时候不要一开始说sort
    • 语法一:数组名.sort()
    • 作用:将数组内的数据,转换为字符串,然后一位一位对比
    • 语法二:数组名.sort(function (a,b) { return a- b})
    • 作用:按照数字从小到大 * * 语法三:数组名.sort(function (a,b) { return b - a})
    • 作用:按照数字从大到小 * * 返回值:返回一个排序好的数组 */
js
复制代码
        var arr4 = [12, 20, 30, 40, 50, 100]

        // console.log(arr4.sort())

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

        console.log(so);
  • 7.indexOf() 数组.indexOf(数据 )
  • // 数组.indexOf(数据,从哪个下标开始()第二个参数不传,默认为0)
  • 作用:从左到右的顺序,查找数组中是否包含这个数据 返回值:找到:返回从左到右第一次出现的下标 否则返回-1 */
js
复制代码
var a = [1, 2, 3, 4, 5, 6,1]

        console.log(a.indexOf(2));

        console.log(a.indexOf(7));

        console.log(a.indexOf(5, 1));

        console.log(a.indexOf(2, 7));
        
       function indexOf(a, data, index = 0) {

            for (var i = index; i < a.length; i++) {

                if (a[i] === data)

                    return i
            }

            return -1

        }

        console.log(indexOf(a, 5,2))//4

        console.log(indexOf(a, 1,2))//6

        console.log(indexOf(a, 2,2))//-1
  • 8.splice 剪切 or 删除
  • 语法一 数组.splice(开始下标数,剪切数量)
js
复制代码
        var arr = [1,2,3,4,5]

        var res = arr.splice(1, 3)

        console.log('剪切到'+res);
  • 语法二:数组.splice(开始下标数,剪切数量,数据一,数据二,数据三...)
  • 返回值:剪切到的内容
js
复制代码
        var arr2 = ['jizhixing', 'guoenhui', 'wozuimei']

        var res1 = arr2.splice(1, 1, 'dameinv', 'pianrende')//添加的

        console.log(arr2)

        console.log(res1)//返回删除的

        arr2.splice(0, 0, 'qwertrytu')

        console.log(arr2)

        arr2.splice(5, 0, 'qasadfdgfd')

        console.log(arr2)