javascript - 拼接不会改变数组的长度

标签 javascript

JavaScript array.splice 改变数组的长度。但是下面的代码似乎总是在不改变数组长度的情况下提取数组的前 10 个元素。这使它陷入无限循环。怎么了?

files = ['a','b','c',....]; // 100 elements
while( files.length ){
    files = files.splice( 0, 10 );
    console.log( files );
}

最佳答案

问题是 splice 返回一个包含已删除元素的数组,然后您再次将其分配给 files。因此 files 数组总是有 10 个值,并且条件永远不会为假。您可以像这样使用它:

files = ['a','b','c',....]; // 100 elements
while( files.length ){
    files.splice( 0, 10 );
    console.log( files.length );
    //=> 90, 80, 70, 60, 50, 40, 30, 20, 10, 0
    // after that it will get out of this loop
}

请记住,splice() 方法通过删除现有元素来更改数组的内容。因此,如果您需要 files 进行进一步处理,那么首先将这些值保存在一个临时数组中,然后将该临时数组与 splice() 一起使用。

关于javascript - 拼接不会改变数组的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51215748/

相关文章:

javascript - 使用 stripe.js 在 stripe 中创建源后,stripeResponseHandler 函数未调用

javascript - 在 Electron 中调用原生 API

javascript - Javascript 中的嵌套函数

javascript - 查询选择器具有父id和子类混合的元素

javascript - 请求中的 node.js 多个函数

javascript - 我可以为 RaphaelJS 的 Canvas 事件提供点击和键盘处理程序吗?

javascript - 导入场景后无法检索所有网格

javascript - 滚动浏览灰色部分后更改标题背景和字体颜色

javascript - imacros javascript 函数循环不工作

javascript - 在 Angular js 1.6.2 中使用自定义过滤器