zoukankan      html  css  js  c++  java
  • 关于数组和字符串的一些常用手段

    数组的复制

            /*一,    怎样复制一个数组? 最简单的方法是 循环这个数组, 把每一项都添加到新的数组中. 
                     如果有人给你出这样的题目, 那么这个回答应该不是对方想要的.
                     Array.slice(start, [end]) 
                     slice 方法返回一个 Array 对象,其中包含了 arrayObj 的指定部分。 (同样可用于string类型)
                     参数详解, 
                     start, 从左开始0为起点(非负数). 
                     end,可选,不填写则为数组或者字符串的长度. 正整数,期望截取的长度; 负数.从数组或者字符串末尾开始算期望去掉的长度
            */
            window.onload = function () {
                var source = [4, 5, 6, "ff", new Date()];
                var target = source.slice(0, -3); //期望去掉后面三个元素. 得到 [4,5]
                var target2 = source.slice(0, 3); //[4,5,6]
                log(target.join(',')); log(target2.join(','));
     
                source = "aabbccdd"; 
                target = source.slice(0, -3);//期望去掉后面三个元素. 得到 aabbc
                target2 = source.slice(0, 3);//aab
                log(target); log(target2);
            }

    去掉数组重复项

    //去掉重复项, 这里提供两个方法
                var arr = arr2 = [1, 2, 2, 3, "aa", "aa", "BB"];
                var newarr = [], tempObj = {};
                for (var i = 0; i < arr.length; i++) {
                    if (tempObj[arr[i]])
                        continue;
                    newarr.push(arr[i]);
                    tempObj[arr[i]] = arr[i];
                }
                //使用正则表达式. 先替换掉所有当前元素, 再加上当前元素, 就可以保证当前元素只出现一次
                newarr = arr.join(',')+",";
                for (var i = 0; i < arr2.length; i++) {
                    var reg = new RegExp(arr2[i] + ",", "g");
                    newarr = newarr.replace(reg, "") + arr2[i] + ",";
                }
                log(newarr.split(','))

    合并数组(去重复)

    //合并数组
                var arr1 = [1, 2, 3]; var arr2 = [3, 4, 5];
                newarr = arr1.join(',') + ",";
                for (var i = 0; i < arr2.length; i++) {
                    var reg = new RegExp(arr2[i] + ",", "g");
                    newarr = newarr.replace(reg, "") + arr2[i] + ",";
                }
                log(newarr.split(','))

    伪数组

    这里把符合以下条件的对象称为伪数组
    1,具有length属性
    2,按索引方式存储数据
    3,不具有数组的push,pop等方法
    4, 能通过Array.prototype.slice转换为真正的数组的带有length属性的对象

    var earr = { 0: "a", 1: "b", 2: "c", length: 3 };
                //log(earr[1]); b
                for (var i = 0; i < earr.length; i++) {
                    //log(earr[i]); a b c
                }
                /*earr的表现和一个 ['a','b','c']数组一样*/
    var toArray = function () {
                    return [].slice.call(arguments);
                }
                log(toArray(3, 5)); // 3,5
                log(toArray(3, 5).constructor); //Array

    常见的伪数组有function的arguments, childNodes, jQuery, 等等.

    //把数组转成伪数组
                var arr = [1, 2, 3, "a"];
                var obj = { length: 0 };
                [ ].push.apply(obj, arr)
                for (var i in obj) {
                    log(i + " " + obj[i]);
                }

    输出: 0 1        1 2       2 3    3 a      length 4

    真数组转化为伪数组:

    [].push.apply(this,[]);

  • 相关阅读:
    access生成sql脚本,通过VBA调用ADOX
    virtualbox 使用USB引导启动安装系统
    atom 调用g++编译cpp文件
    VPython 三维显示 —— hello word
    sql高级篇(一)
    sql基础篇
    struts2中的<s:select>默认选项
    关于SVN更新注意
    mysql中的substr()函数
    mysql中exists的用法介绍
  • 原文地址:https://www.cnblogs.com/jianjialin/p/2076546.html
Copyright © 2011-2022 走看看