美文网首页
在WXS中遍历对象

在WXS中遍历对象

作者: 不吃瓜的码农 | 来源:发表于2019-10-17 17:23 被阅读0次

微信小程序提供了WXS语言,允许我们在WXML中执行简单的脚本,这在渲染时加工数据很有用,但是WXS没有JS功能强大,仅提供了基础功能,WXS没有for...in语句,也不能用Object.keys,所以想要遍历一个plain object,我们需要自己实现。
下面实现了一个遍历plain object方法。它的思路是:

  • plain object序列化;
  • 从序列化后的字符串中匹配plain object的属性:双引号内至少一个字符并紧跟冒号即认为匹配到一个属性;
  • 考虑对象嵌套场景,需要记录{匹配的次数,当匹配到一个{,嵌套层级+1,当匹配到一个},嵌套层级-1,仅当层级为1时,匹配到的属性才会被记录。
  • 匹配完整个字符串后,返回记录的属性。

代码实现:

 function objectKeys(obj) {
    var str = JSON.stringify(obj);
    var reg = getRegExp('"(\w+)":|[{}]', "g");
    var keys = [];
    var nested = 0;
    var result = null;

    while((result = reg.exec(str)) !== null) {
      var match = result[0]

      switch(match) {
        case "{":
          nested++;
          break;
        case "}":
          nested--;
          break;
        default:
          if (nested === 1) keys.push(result[1]);
          break;
      }
    }
    
    return keys;
  }

得到对象的全部属性后,我们就可以遍历对象了。

相关文章

  • 在WXS中遍历对象

    微信小程序提供了WXS语言,允许我们在WXML中执行简单的脚本,这在渲染时加工数据很有用,但是WXS没有JS功能强...

  • 框架视图层(三)

    wxs 概览 仿js功能 页面渲染 数据处理 wxs模块、 .wxs文件 module 对象每个wxs都有内置的m...

  • 小程序UITool.wxs,component文件

    UITool.wxs,.wxs文件,是可以在.wxml文件的标签节点中直接调用执行的方法对象。.wxml标签只能显...

  • 79-对象遍历

    什么是对象的遍历对象的遍历就是依次取出对象中所有的属性和方法 如何遍历一个对象?在JS中可以通过高级for循环来遍...

  • 使用v-for遍历数据

    遍历数组 具体代码 遍历数组中的对象 具体代码 遍历对象 具体代码 遍历整数 具体代码

  • Jsoncpp 操作指南

    Jsoncpp操作 创建对象 创建数组 遍历数组 遍历对象中的key

  • text标签显示后台带空格与换行字符串需要...

    在项目中新建wxs文件,键入以下代码 在相关页面wxml中引入wxs文件 .

  • vue中this的指向问题

    在函数中需要遍历数组等对象时,遍历中的this会指向window,所以需要在遍历前定义一下this指向

  • wxmp_note3

    wxs: 既可以定义在 wxml中也可以写在单独的文件.wxs中var format = function(tex...

  • 我在JavaScript中用的较少的遍历

    JavaScript中对对象的遍历 1.for in遍历对象, 能够遍历出自身和继承的可枚举属性(Symbol除外...

网友评论

      本文标题:在WXS中遍历对象

      本文链接:https://www.haomeiwen.com/subject/xyjvmctx.html