zoukankan      html  css  js  c++  java
  • js入门之内置数组对象 Array

    一、 数组

    1. 创建数组的两种方式

    1. 数组字面量
    var array = []
    
    2. 数组的构造函数创建数组
    var array = new Array();

    2. 如何判断一个变量是否是数组

    instanceof
    方式1:
    var array = new Array();
        function fn(arr) {
            if (!(arr instanceof Array)) {
                console.error('参数不是数组对象')
                return;
            }
        }
        var d = [];
        fn(d);
    
    方式2:
    Array.isArray(arr)

    二、数组中提供的常用方法

    toString()  把数组转换成字符串 用逗号分隔每一项
    valueOf()  返回数组对象本身 
    
    常用方法:
    1. 栈操作 (先进后出) 比喻成一个盒子 只开一个口
    
    push()  返回值是改变后的数组的长度
    pop()  取出数组中的最后一项, 并且会修改length属性
    
    2. 队列 (先进先出) 比喻成两个盒子 两头都开口
    push()   往最后添加元素
    shift()  取出数组中最前面插入项, 返回数组的长度
    unshift() 在数组中最前面插入项, 返回数组的长度
    
    3. 排序
    reverse()  反转
    sort()  直接在原宿主上进行排序
        默认情况下是对字符编码从小到大排序

    4. 操作方法
    concat() 把两个数组拼接起来
    slice() 从当前的数组中截取一个新的数组, 不影响原来的数组
    splice() 删除或替换当前数组的某些元素,

    
    

    5. 位置方法
    indexOf() 从数组中从前往后找元素
    console.log(arr.indexOf('a', 2)); 第二个参数指定索引位置
    lastIndexOf() 从后往前找 如果没找到返回-1

    6. 迭代方法 不会修改原数组(可选) html5中提供的
    every()
    filter()

    forEach()
    map()
    some()

    7. 方法将数组的所有元素连接到一个字符中
    join()

    学习一个方法的步骤

    1. 了解方法的作用
    2. 方法的参数
    3. 方法的返回值
    4. 测试 写demo

    三、 常见案例

    1. 对数值类型的数组进行排序

    var array = [ 25, 10, 108, 18];
        array.sort(function (a,b) {
            return a - b;
        });
        console.log(array);
    
        字符个数从小到大排序
        var arr = ['abc', 'ab', 'a', 'abcdef', 'xy'];
        arr.sort(function (a,b) {
            return a.length - b.length;
        });
        console.log(arr);
    View Code

    2. sort 内部实现原理

    function sort(array, fnCompare) {
        for (var i = 0; i < array.length - 1; i++) {
            var isSort = true;
            for (var j = 0; j < array.length -1 -i; j++) {
    
                if (fnCompare(array[j], array[j + 1]) < 0) {
                    isSort = false;
                    var tmp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = tmp;
                }
            }
            if (isSort) {
                break;
            }
        }
    }
    var arr = [58, 10, 15, 32];
    sort(arr, function(a, b) {
        return a - b;
    });
    console.log(arr);
    View Code

    3. 查找数组中所有的a

    var index = -1;
        var arr = ['c', 'a', 'z', 'a', 'x', 'a'];
        do {
            index = arr.indexOf('a', index + 1);
            if (index !== -1) {
                console.log(index);
            }
        } while(index !== -1); 
    View Code

    4. filter过滤

    var arr = [1500,1200,2000,2100,1800];
    var newArray = arr.filter(function (item) {
        return item < 2000;
    });
    console.log(newArray);
    View Code

    5. 清空数组

    方法1
    arr = [];
    方法2
    arr.length = 0;
    方式3 
    arr.splice(0, arr.length);
    
    var arr = [1, 2, 3];
    // 第一个参数是从什么位置开始删除 索引
    // 第二个参数是删除多少个元素
    arr.splice(0,arr.length)
    console.log('array: ' + arr);
  • 相关阅读:
    Android系统剪切板
    java中tcp小样例
    Linux
    图书馆管理系统——模板建立
    学好英语的七个规则(上)
    spring中abstract bean的使用方法
    EularProject 36:2进制和10进制回文数
    java封装AES加密算法
    王艾辉:止跌信号频出 意味着什么?
    Storm集群组件和编程模型
  • 原文地址:https://www.cnblogs.com/guniang/p/11987634.html
Copyright © 2011-2022 走看看