小程序
小游戏
企业微信
微信支付
扫描小程序码分享
循环数组的时候可以直接用wx:for-index的值,毕竟是数组下标。
但是如果循环的是对象的话获取的就是属性名而不是循环次数了,这时应该怎么办?
Vue里可以直接v-for="(val,key,index) in obj"里获取index,微信里有没有办法获取?
4 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
var obj = { key1:1, key2:2, key3:3 }; Object.keys(obj).length 自己用JS处理不行吗?
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
循环对象数组吗?用index也没有问题呀
实测有用,
首先是wxml代码,m1.getIndex(index,arr),这里,分别传入index(固定写死index)还有循环的那个对象arr。
<view> <block wx:for="{{arr}}"> <view >{{item.text}}{{m1.getIndex(index,arr)}}</view> </block> </view>
下面是wxs代码,直接写在同一个wxml页面就行
<wxs module="m1"> var getIndex = function(key,obj) { var keyslist = objectKeys(obj) var index = keyslist.indexOf(key) return index; } 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; } module.exports.getIndex = getIndex; </wxs>
//循环里加是if 判断,可以解决: wx:for-index="i" wx:if="{{i<3}}"
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
var obj = { key1:1, key2:2, key3:3 }; Object.keys(obj).length 自己用JS处理不行吗?
循环对象数组吗?用index也没有问题呀
实测有用,
首先是wxml代码,m1.getIndex(index,arr),这里,分别传入index(固定写死index)还有循环的那个对象arr。
<view> <block wx:for="{{arr}}"> <view >{{item.text}}{{m1.getIndex(index,arr)}}</view> </block> </view>
下面是wxs代码,直接写在同一个wxml页面就行
<wxs module="m1"> var getIndex = function(key,obj) { var keyslist = objectKeys(obj) var index = keyslist.indexOf(key) return index; } 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; } module.exports.getIndex = getIndex; </wxs>
//循环里加是if 判断,可以解决: wx:for-index="i" wx:if="{{i<3}}"