把一个字符串数组转化成数字数组

今天遇到了一个小问题,项目中一个功能是按特定数字键,进入到酒店模式。
但是发现拿到的按键键值是字符串的,我们判断的时候需要拿数字判断,导致二者永远判断不等。
if (this.numVec[0].key === vec[0] &&
this.numVec[1].key === vec[1] &&
this.numVec[2].key === vec[2] &&
this.numVec[3].key === vec[3]) {
isEqual = true;
if (this.numVec[3].time - this.numVec[0].time <= timeOut) {
DBG.info(“Vec Equal::” + this.numVec[3].time - this.numVec[0].time + timeOut);
isEqual = true
} else {
DBG.info(“Vec Equal but time out::” + this.numVec[3].time - this.numVec[0].time + timeOut);
isEqual = false
}
}
在这里插入图片描述
在这里插入图片描述
控制台中的切图中可以看到前者是数字56,后者是字符型‘56’,导致二者无法相等。
看到这。。。。想到了两种处理办法,1、把其中一个转化成和另外一个类型一致;
2、不要用严格恒等===,换成==尝试一下。

显而易见的,方案2是最简单且可行的,尝试了下也是可以的。只是要注意,这种方式只在前端JS编码时可用,并且对于代码规范性不是很有利。
但是还是想尝试下方案1,这种小小的点往往是不知道怎么下手然后还很常见的,怎么实现不遍历数组而能改变数组中每一个元素的类型呢????不会怎么办?当然是查资料!
百度了一下,网上给出了一个比较好的方案,先尝试一下:a=[‘1’,‘2’,'3,‘4’]
a.map(Number); // a=[1,2,3,4]
不知道怎么,这个方法在我这个项目中用的时候没有生效。。。。。无语了,这个方案的有效性还待试验。。。。
还要中方法,就是需要遍历数组,将数组中的每个字符串用parseInt方法转为整型,这个方案是最直白的,但是也是最麻烦的,在数组中元素过多时不适用。

猜你喜欢

转载自blog.csdn.net/weixin_44349573/article/details/88547751