zoukankan      html  css  js  c++  java
  • 关于类数组和字符串数组

    <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

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

  • 相关阅读:
    P2073 送花(Treap维护双权值)
    P2041 [NOI2005]维护数列(Splay树支持插入区间、删除区间、修改区间、翻转区间、区间求和、区间带修改最大子列和的代码模板)
    P1801 黑匣子(Treap树)
    P3377 【模板】左偏树(可并堆)
    P1553 可怜的狗狗(可持久化线段树)
    P1503 鬼子进村(Treap树)
    Adobe CC 2017 全系列官方中文版32/64位
    Serverless简介
    小程序开发框架MPVue和uni-app
    ORM对象关系映射
  • 原文地址:https://www.cnblogs.com/ArthurXml/p/5409520.html
Copyright © 2011-2022 走看看