首页 新闻 会员 周边

javascript 问题

0
悬赏园豆:15 [已解决问题] 解决于 2019-05-24 13:36

<script>
var data=[{name:"qwe.jpg",age:12},{name:"sdf12.png",age:32},{name:"weqwe.jpg",age:12}];
for(var i=0;i<data.length;i++){

}

</script>

//删除data里name等于str的那条数据

密码剪头刀的主页 密码剪头刀 | 初学一级 | 园豆:103
提问于:2019-05-24 11:52
< >
分享
最佳答案
0
for(var i=0; i<data.length; i++)
{ 
    if(data[i].name == str) 
        data.splice(i, 1); 
}
收获园豆:15
dudu | 高人七级 |园豆:30994 | 2019-05-24 12:44

比如说:var data=[{name:"qwe.jpg",age:12},{name:"sdf12.png",age:32},{name:"sdf12.png",age:24},{name:"weqwe.jpg",age:12}];
我要删除所有name==sdf12.png的数据,这样处理就不行了,要么拼接,要么递归

你风致 | 园豆:2213 (老鸟四级) | 2019-05-24 13:44
其他回答(1)
0

splice会改变原数组,如果你确定数组里只会存在一个name==str;那么运用楼上的方法没错;
倘若你数组对象里有多个name==str;就会存在bug;比如说你紧接着的下一个name==str;此时数组变了,i增加;刚好错过这个比较;
1.此时建议你把索引也就是i记录下来;然后利用slice去做个拼接;因为slice不会改变原数组;
2.在一楼的基础上写个递归方法

你风致 | 园豆:2213 (老鸟四级) | 2019-05-24 13:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册