文章详情页
javascript - 第二个for循环里面的j--什么意思?
问题描述
var arr = [ 1,2,2,4,2 ];
for ( var i=0; i<arr.length; i++ ) {
for ( var j=i+1; j<arr.length; j++ ) { if ( arr[i] == arr[j] ) {arr.splice( j, 1 );j--; }}
}
问题解答
回答1:如果遇到重复项,从 arr 中 splice 掉。splice 掉之后,数组下一项仍是当前索引,所以要先 j--; 再循环中的 j++,保持索引正确。
比如,外层第2次循环,i = 1,j = 2,然后 arr[1] 是2,arr[2] 也是2,arr[2] 会被 splice 掉,数组变成 [1,2,4,2],下个元素 4 仍是第 2 项,如果不先 j--的话会漏掉。
回答2:楼上说的没错。补充一下,直接用 filter 就可以实现了。
var arr = [ 1,2,2,4,2 ];arr.filter(function (e, i) { return arr.indexOf(e) === i;})
标签:
JavaScript
相关文章:
1. 请问带渐变背景的进度条如何实现?求给点思路2. javascript - 读js权威指南“作为值得函数”产生了疑惑,求释疑3. python3.x - python中的虚拟环境怎样设置一直处于激活状态4. boostrap怎么在移动端不显示sidebar?5. 网页爬虫 - Python爬虫返回状态码与实际情况不符?6. arguments问题7. mysql - 数据库建字段,默认值空和empty string有什么区别 1108. python中merge后文件莫名变得非常大9. file - Python如何读文件内容修改后写回原文件10. javascript - 为什么 process.stdin 会有 write 方法◔ ‸◔?
排行榜