仿美团项目学习源码分析(2)---JS之slice()方法
2017-06-07 11:22
302 查看
在看项目源码的时候发现一个算法有点问题,但是深入研究后只能说这个算法可以执行并得到正确结果,算法有多种实现方式,这也是一种思路.源于我对JS语法没有深入了解导致之前误以为算法有误,这里记录下.
代码如下:
总所周知,slice()方法可以根据start end对数组进行截取操作,并形成新的数组(对原有数组无影响),但是很少有人提及其另一个属性:end如若超出数组个数(即数组越界)时,相当于从start位置开始截取到最后一个元素.所以上述算法是正确的.
笔者进行了测试如下:
代码如下:
for (let i = 0; i < pageCount; i++) { let length = menuItems.length < (i * 10) ? menuItems.length - (i * 10) : 10 let items = menuItems.slice(i * 10, i * 10 + length) let menuView = ( <View style={styles.itemsView} key={i}> {items} </View> ) menuViews.push(menuView) }
总所周知,slice()方法可以根据start end对数组进行截取操作,并形成新的数组(对原有数组无影响),但是很少有人提及其另一个属性:end如若超出数组个数(即数组越界)时,相当于从start位置开始截取到最后一个元素.所以上述算法是正确的.
笔者进行了测试如下:
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"]; console.log("数组的"+fruits.slice(1,19));可以看到slice()方法的end已经远超数组元素个数,我们看下打印结果
数组的Orange,Lemon,Apple,Mango印证了本人上述论点.
相关文章推荐
- 仿美团项目学习源码分析(3)--数组加key
- 仿美团项目学习源码分析(1)
- Ember.js学习项目源码发布
- jQuery 1.6 源码学习(三)——core.js[3]之init方法
- Vue.js 源码学习笔记 -- 分析前准备2 -- Object.defineProperty
- java学习之旅56--数组_StringBuilder和StringBuffer的使用_常用方法_方法链的实现_JDK源码分析
- 大项目源码分析方法总结
- js学习|jQuery初学:find()方法及children方法的区别分析
- 千万不要小看 js 里的算术方法,它在项目中的数据分析、图表数据计算上,用处很大
- jQuery 1.6 源码学习(五)——core.js[5]之类型判断方法type
- Vue.js 源码学习笔记 -- 分析前准备1 -- vue三大利器
- JS中判断相等的方法(underscore中eq方法源码分析)
- jQuery 1.6 源码学习(六)——core.js[6]之jQuery对象/数组操作相关方法
- 【 js 基础 】【 源码学习 】源码设计 (更新了backbone分析)
- Vue学习之源码分析--Vue.js依赖收集(二)
- Linux设备驱动之Input子系统学习日记--笔者将分享学习一个全新的框架的方法并结合源码深入分析input子系统
- 【面向对象课程项目:纸牌】Java实例学习(一):优秀源码的分析
- 这个项目学习到的新js方法
- jQuery原型方法first,last,eq,slice源码分析
- 五毛的cocos2d-x学习笔记02-基本项目源码分析