• 关于类数组和字符串数组


    <body>
          <ul id="result">
              <li></li>
          </ul>
          <a id="yyuu"></a>
      </body>

    <script>
           function IsArrayLike(o) {     // 判断是否为类数组
               if (o&&typeof o==="object"&&isFinite(o.length)&&o.length>0&&o.length===Math.floor(o.length)&&o.length<4294967296) {
                   return true;
               } else {
                   return false;
               }
           }
           var elems = {           
               length: 0,
               add:function(elem) {
                   Array.prototype.push.call(this, elem);
               },
               gather:function(id) {
                   this.add(document.getElementById(id));
               }
           };
           elems.gather('result');
           elems.gather('yyuu');
           for (var i = 0; i < elems.length; i++) {
               alert(elems[i].innerHTML);
           }
           var abc = {
               length: 3,
               1: 'aaa',
               '2': 'bbb',
               'a': 'ccc',
               'b': 'ddd'
           };
           var ctx = IsArrayLike(abc);
           for (var i  in abc) {
               console.log(i + "--" + abc[i]);
           }
           for (var i = 0; i < abc.length; i++) {
               console.log(i + "--" + abc[i]);
           }

         var t = Array.prototype.join.call(abc, '-');
         console.log(t);
       </script>

    image
    用数组的方法处理这样的类数组,只能处理name 是数字的或者能转化为数字的属性 本列中abc对象的后两个属性是没有打印出来的

    根据判断是否为类数组(IsArrayLike)这个方法可以看出:只要一个对象带有lenth属性,并且其值为正整数,则该数组就为类数组

    在学习类数组的过程中,发现了一个很有趣的处理方法,就是把字符串当成数组来进行处理

    <script>
        var s = 'asdfghjkl',t={};
        t.a = s.charAt(1);  //注意不是charAt[]
        t.b = s[2];
        for (var i in t) {
            console.log(i + "-----" + t[i]);
        }
    </script>

    image
    既然字符串的行为类似与数组,那么能不能将处理数组的方法应用到字符串上呢?试试看

    t.c = Array.prototype.join.call(s, '-');
    t.d = Array.prototype.slice.call(s, 2);
    for (var i in t) {
        console.log(i + "-----" + t[i]);
    }

    image

    可以看出完全没问题,这就多了很多处理字符串的方法了

  • 相关阅读:
    自此KYang独一人
    根本不存在 DIV + CSS 布局这回事转
    释德扬,少林大师教你简易健身法
    只让指定的机器连接SQLServer服务器
    Visual Studio 2005 IDE模板丢失的解决方法
    asp.net 未能加载视图状态
    如何控制触发器递归
    4G相关标准UMB/LTE/WiMAX介绍
    Linq To Sql 项目从Beta迁移到RTM注意事项
    保护眼睛的windows窗口颜色
  • 原文地址:https://www.cnblogs.com/ArthurXml/p/5409520.html
Copyright © 2020-2023  润新知