在WXS中遍歷對象

微信小程序提供了WXS語言,允許我們在WXML中執(zhí)行簡單的腳本氮双,這在渲染時加工數(shù)據(jù)很有用效诅,但是WXS沒有JS功能強(qiáng)大胀滚,僅提供了基礎(chǔ)功能,WXS沒有for...in語句乱投,也不能用Object.keys咽笼,所以想要遍歷一個plain object,我們需要自己實現(xiàn)戚炫。
下面實現(xiàn)了一個遍歷plain object方法剑刑。它的思路是:

  • plain object序列化;
  • 從序列化后的字符串中匹配plain object的屬性:雙引號內(nèi)至少一個字符并緊跟冒號即認(rèn)為匹配到一個屬性双肤;
  • 考慮對象嵌套場景施掏,需要記錄{匹配的次數(shù)钮惠,當(dāng)匹配到一個{,嵌套層級+1七芭,當(dāng)匹配到一個}素挽,嵌套層級-1,僅當(dāng)層級為1時抖苦,匹配到的屬性才會被記錄毁菱。
  • 匹配完整個字符串后米死,返回記錄的屬性锌历。

代碼實現(xiàn):

 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;
  }

得到對象的全部屬性后,我們就可以遍歷對象了峦筒。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末究西,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子物喷,更是在濱河造成了極大的恐慌卤材,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件峦失,死亡現(xiàn)場離奇詭異扇丛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)尉辑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門帆精,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人隧魄,你說我怎么就攤上這事卓练。” “怎么了购啄?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵襟企,是天一觀的道長。 經(jīng)常有香客問我狮含,道長顽悼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任几迄,我火速辦了婚禮蔚龙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘乓旗。我一直安慰自己府蛇,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布屿愚。 她就那樣靜靜地躺著汇跨,像睡著了一般务荆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上穷遂,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天函匕,我揣著相機(jī)與錄音,去河邊找鬼蚪黑。 笑死盅惜,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的忌穿。 我是一名探鬼主播抒寂,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼掠剑!你這毒婦竟也來了屈芜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤朴译,失蹤者是張志新(化名)和其女友劉穎井佑,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體眠寿,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡躬翁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了盯拱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盒发。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖坟乾,靈堂內(nèi)的尸體忽然破棺而出迹辐,到底是詐尸還是另有隱情,我是刑警寧澤甚侣,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布明吩,位于F島的核電站,受9級特大地震影響殷费,放射性物質(zhì)發(fā)生泄漏印荔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一详羡、第九天 我趴在偏房一處隱蔽的房頂上張望仍律。 院中可真熱鬧,春花似錦实柠、人聲如沸水泉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽草则。三九已至钢拧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間炕横,已是汗流浹背源内。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留份殿,地道東北人膜钓。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像卿嘲,于是被迫代替她去往敵國和親颂斜。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 概要 64學(xué)時 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,196評論 0 3
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,101評論 1 32
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時腔寡,會觸發(fā)此異常焚鲜。 O...
    我想起個好名字閱讀 5,312評論 0 9
  • 第3章 基本概念 3.1 語法 3.2 關(guān)鍵字和保留字 3.3 變量 3.4 數(shù)據(jù)類型 5種簡單數(shù)據(jù)類型:Unde...
    RickCole閱讀 5,126評論 0 21
  • 1. 簡介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL放前、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,520評論 0 4