習慣沉默2017-07-05 10:56:21
用 filter()
确实可以一句话搞定,但是,效率不高。其实可以用 find
(参考 MDN)
1 2 3 |
|
可惜 IE 不支持 find()
,所以在 MDN 文档快结束的地方,有一个 Polyfill。
如果说采用 map 来实现,也不需要用 ES6 的 Map,因为原生对象就支持 string 类型的 key,但不管怎么实现,这个 map 的转换应该在 getServiceTypeName
之外进行。因为转换的过程比你写的 for ... of
更耗时。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
代言2017-07-05 10:56:21
objToStrMap初始化一次就可以了,你循环中每次都在初始化,这样会比较慢。
补充说明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|
为情所困2017-07-05 10:56:21
...
先转成键值对为name:Id的map结构。然后就可以直接用name去拿相应的id。你完全没搞懂他给你说的方法的意思。
先把type数组转化成map结构,然后通过map.get(code)去拿就好了。不用遍历。
阿神2017-07-05 10:56:21
function中,可以这样写
let result = serviceTypeList.map((val)=> val.typeId === code);
retVal = result.name;
仅有的幸福2017-07-05 10:56:21
半行代码就搞定
1 |
|
女神的闺蜜爱上我2017-07-05 10:56:21
循环里做filter这个操作本身不慢的。
什么转成map的方案需要考虑转换本身的开销
一部分语言自带的map实现,在集合很小的时候用的就是数组,省去了hashcode的操作反而提高效率