javascript - 如果删除数组中固定开头的值呢?
巴扎黑
巴扎黑 2017-04-11 10:25:47
[JavaScript讨论组]

比如我有一个数组,我想把数组中所有开头带13的删除,为什么数组只会删除偶数呢?而且只会删除5个。

var arr = ["1302","1303","1304","1305","1306","1307","1308","1309","1310","1311"]
arr.map(function(val,index,arr){
    if (arr[index].substring(0,2) == sub) {
        arr.splice(index,1);
    }
})
console.log(arr[index],val,index);
巴扎黑
巴扎黑

全部回复(3)
PHPz
arr.filter(function(item){return !item.startsWith('13')})

你不能在map的时候修改arr


var arr = ["1302","1303","1304","1305","1306","1307","1308","1309","1310","1311"];
for(var i = 0 ; i < arr.length ; i ++){
    if(arr[i].startsWith('13'))
        arr.splice(i--,1);
}
大家讲道理

用filter呗

var arr = ["1302","1303","1304","1305","1306","1307","1308","1309","1310","1311",'1252']
var res = arr.filter(function(val,index){
    return val.substring(0,2) !== '13'
})
console.log(res);

你原来的代码,在遍历数组的时候删数组元素,就有可能出现,索引紊乱,比如你刚遍历了第一个,就把它删掉了,等遍历第二个的时候,索引是1,但这个时候原来的1对应的元素已经对应到0去了,那就出现漏网之鱼

天蓬老师

同写了一个 filter 的
var arr = ["1302","1303","1304","1305","1306","1307","1308","1309","1310","1311"]
var sub = "13"

var myFilter = function(_str) {

return _str.substring(0, 2) == sub ? false : true;

}

console.log(arr.filter(myFilter));

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号