您的位置:首页 > Web前端 > JavaScript

仿美团项目学习源码分析(2)---JS之slice()方法

2017-06-07 11:22 302 查看
在看项目源码的时候发现一个算法有点问题,但是深入研究后只能说这个算法可以执行并得到正确结果,算法有多种实现方式,这也是一种思路.源于我对JS语法没有深入了解导致之前误以为算法有误,这里记录下.

代码如下:

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
印证了本人上述论点.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: