快活林资源网 Design By www.csstdc.com
之前在写微信小程序项目时,里面有一个“城市选择”的功能,笔者用的是 <picker-view>
组件,这个组件比较特别,因为它的 value
属性规定是 数组 格式的。比如: value="[1]"
。
因为当时对JS变量类型转换的不了解,笔者在代码中写下了这样的几行判断:(这是严谨的)
let val_one=typeof this.data.pIndex=="number""htmlcode">let length=placeArray[val_one].sub.length if(val[0]>=length){ val=[length-1] }else if(val[0]<0){ val=[0] }之后我再回过头优化这个项目代码时发现这里(强制使用时将数组转为数字,反馈时将数字转为数组)其实大可不必:
JavaScript似乎对数据有自己“独特”的处理方式,但是目前笔者还没找到相关资料~~
如何判断一个值能不能作为数组下标(索引)
但是可以肯定的是:为整数属性键赋值是数组才有的特例,因为它们与非整数键的处理方式不同。要判断一个属性是否能作为数组的索引,笔者找到了ES6规范文档中的一段话:
当前仅当
ToString(ToUint32(P))
等于P,并且ToUint32(P)
不等于2^32-1
时,字符串属性名称P才是一个数组索引。这个操作用JS可以这样实现:
function toUint32(value){ return Math.floor(Math.abs(Number(value))) % Math.pow(2,32); } function isArrayIndex(key){ let numericKey=toUint32(key); return String(numericKey) == key && numericKey < (Math.pow(2,32)-1); }
toUint32()
函数通过规范中描述的算法将给定的值转换为无符号32位整数;isArrayIndex()
函数中先将键转换为uint32结构,然后进行两次比较(toString()
后等不等于原数并且是否小于2^32-1
)有了这个基础,我们就可以基于此去简单模仿一下
new Array()
的行为 —— 其中最重要的还是关于length的描述:function createArray(length=0){ return new Proxy({ length },{ set(trapTarget,key,value){ let currentLength=Reflect.get(trapTarget,"length"); if(isArrayIndex(key)){ let numericKey=Number(key); if(numericKey >= currentLength){ Reflect.set(trapTarget,"length",numericKey+1); } }else if(key === "length"){ if(value < currentLength){ for(let index=currentLength-1;index >= value;index--){ Reflect.deleteProperty(trapTarget,index); } } } // 无论key是什么类型都要执行这段代码 return Reflect.set(trapTarget,key,value); } }); }实验一下:
总结
快活林资源网 Design By www.csstdc.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
快活林资源网 Design By www.csstdc.com
暂无评论...
更新日志
2024年05月17日
2024年05月17日
- 【佛之吧沙发】VA-BuddhaBar-BestOf2byRavin(FLAC)
- [ABC唱片]-《雪莉—蓝》[SACD-008][SACD][WAV+CUE]
- 黎瑞恩.2002-理想的日子精选2CD【环球】【WAV+CUE】
- 【驰放沙发(J)】VA-2024-WinterTime,Vol.12(FLAC)
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 韩红《青藏高原+红+韩红精选集》3CD[WAV分轨][1.7G]
- 高胜美《经典金选》1991-1994 4CD[WAV整轨][1.9G]
- 【迷幻电音】AstralWaves-2023-Singles,RemixesandRaritiesII(FLAC)
- 中唱唱片群星《好歌珍藏-游子情深》2CDWAV
- 张国荣.2011-极品天碟LPCD45II(雨果版)【环球】【WAV+CUE】
- 张学友《醒着做梦》[DFF][1.1G]
- 刘惜君 《如我》[WAV分轨][403M]
- 白玛多吉《梦》限量1:1母盘直刻[低速原抓WAV+CUE][508M]
- 魏金栋-金歌新曲-梦里全是桂花香2CD[天凡之音][WAV+CUE]
- 鲛岛有美子-樱花赋HQCD[天龙][WAV+CUE]