javascript - 数组的拼接会减少array.length的值吗?
问题描述
function filter_list(l) {
for (var i = 0; i < l.length; i++) {
if (typeof(l[i]) === 'string') {
l.splice(i, 1);
}
}
return l;
}
console.log(filter_list([1, 2, 'a', 'b']));
当元素2(索引从0开始)拼接时,为什么for循环中数组的长度没有变为3?最后一个元素不应被处理,但它已被处理。
解决方案
数组的拼接会减少array.length的值吗?
是的,因为方法就地splice
修改了数组
解决方案可能是使用while
循环。
function filter_list(l) {
i = l.length;
while (i--) {
if (typeof(l[i]) === 'string') {
l.splice(i, 1);
}
}
return l;
}
console.log(filter_list([1, 2, 'a', 'b']));
推荐阅读
- c# - cefsharp如何检查页面中的所有java脚本是否完成?
- themes - 扩展默认模板 Odoo 12
- python - 使用 datetype 从 pandas 列绘制直方图
- c++ - 波函数的相互正交性 - 犰狳
- c++ - 在 cmake 中启用 Qspectre 和 Control Flow Guard 开关
- mysql - Flask + MySQL + PHP + Docker-Compose = 痛苦
- sql-server - 如何在 SQL Server 中添加和更新列中的值
- cassandra-2.1 - 帧大小 (352518912) 大于最大长度 (15728640)!运行 sstableloader 时出现异常
- php - Cakephp 使子数组可编辑
- python - Django "python manage.py runserver" 创建了一个额外的 python.exe 进程,该进程不能被杀死并且仅在使用 CYGWIN 时挂起