zoukankan      html  css  js  c++  java
  • JS数组的操作总结

    String.split(String/RegExp)

    Array.join(String)

    Array.concat(String/Array)

    Array.slice(start, end)

    Array.reverse() [原]

    Array.sort() [原]

    indexOf(value) [ES5]

    lastIndexOf(value)[ES5]

    splice(start, length, value1...)[原]

    every(callback)[ES5]

    some(callback)[ES5]

    filter(callback)[ES5]

    map(callback)[ES5]

    forEach(callback)[ES5]

    /*
     * 数组的构成
     * String.split() 把字符串转成数组
     * Array.join() 可以把数组转化成字符串
     * 
     * 数组的连接/截取
     * Array.concat(String/Array) 
     * 如果没有参数 克隆当前数组
     * 当传递一个元素是数组的数组时并不能递归地展开
     * Array.slice(start, end) [start, end)
     * 当传递参数是负值时,其值转变成负值加上数组长度
     * 
     * 数组排序
     * Array.reverse() 在原数组上执行数组元素翻转 并返回翻转后的数组
     * Array.sort() 在原数组上执行排序操作, 并返回排序后的数组
     * sort()方法可以传递一个自定义的比较方法
     * 
     * 数组元素定位(ECMAScript 5) IE9+...
     * indexOf()
     * lastIndexOf()
     * 自定义indexOf()
     * 
     * 数组的插入/删除/替换
     * Array.splice() 在原数组上执行操作
     * splice(start, length, string, ...)
     * 插入元素:splice(start, 0, 'a')                 在start后插入'a'
     * 删除元素:splice(start, 1)                         删除下标为start的元素
     * 替换元素:splice(start, length, string, ...)     替换 (删除添加)
     * 
     * 数组迭代(ECMAScript 5)
     * Boolean every(function(item, index, array) { ... })
     * Boolean some(function(item, index, array))
     * Array filter(function(item, index, array))     返回筛选的数组 函数返回true的元素
     * Array map(function(item, index, array))        返回操作后所有数组元素
     * void forEach(function(item, index, array))    没有返回值
     * 
     * 用回调函数迭代地将数组简化为单一的值
     * reduce(function(prev, cur, index, array))
     * reduceRight(function(prev, cur, index, array))
     * 
     * 自定义操作
     * inArray(value, array)     //检查数组中是否存在某个值
     * unique(array)            //删除数组中重复的元素
     * shuffle()                //随机排序
     * rand()                    //从数组中随机取出一个或多个单元 
     * countValues(array)        //统计数组中所有的值出现的次数
     */
    /**
     * 数组排序
     * 当value1 - value2 > 0 则将交换两者位置 
     * @param {Object} value1
     * @param {Object} value2
     */
    function compare(value1, value2) {
        return value1 - value2;
    }
    var values = [1, 3, 30, 2, 10];
    values.sort(compare);
    console.log(values);
    
    var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
    //判断数组元素是否都大于2
    var result = numbers.every(function(item, index, array) {
        return item > 2;
    });
    //判断数组中是否有大于2的元素
    var result = numbers.some(function(item, index, array) {
        return item > 2;
    });
    //返回由符合条件的元素组成的数组
    var result = numbers.filter(function(item, index, array) {
        return item > 2;
    });
    //对每个元素操作并以数组的形式返回
    var result = numbers.map(function(item, index, array) {
        return item * 2;
    });
    //遍历数组
    numbers.forEach(function(item, index, array) {
        //....
        item = item * 2;
    });
    //给每个数组元素加2
    for(var i=0, len=numbers.length; i<len; i++) {
        numbers[i] += 2;
    }
    
    var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
    var index = numbers.indexOf(3);            //2
    var index = numbers.lastIndexOf(3);        //6

    未完待续。。。

  • 相关阅读:
    生活中的大数据 hadoop
    IOS设计模式学习(11)中介者
    Java 编程的动态性,第3部分: 应用反射--转载
    Java编程 的动态性,第 2部分: 引入反射--转载
    Java 编程的动态性 第1 部分: 类和类装入--转载
    斐波那契数列(fabnacci)java实现
    Chrome调试大全--转载
    jboss7 加载module过程
    UML解惑:图说UML中的六大关系--转
    jboss学习
  • 原文地址:https://www.cnblogs.com/mackxu/p/2937307.html
Copyright © 2011-2022 走看看