javascript - js数组去重复
黄舟
黄舟 2017-04-10 17:53:41
[JavaScript讨论组]
    isRepeat()
    function isRepeat() {
        var $array = [0, 0, 0, 0, 0, 0, 0, 1]
        console.log($array.length)
        for (i = 0; i < $array.length; i++) {
            if ($array[i] > 0) {
                console.log($array)
            } else {
                $array.splice(0, 1)
                console.log($array)
                console.log($array.length)
            }

        }
    }
    为什么数组length变4后就不动了啊?我想去下前面没用的0比如0000000001,000000002,最后只剩下有效数字!
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(4)
ringa_lee

因为你的$array.length一直在变啊

for (i = 0; i < $array.length; i++) {}

循环到第四次的时候,i 等于 4 ,$array.length 也是 4 呢

然后如果只是要达到说000001变成1的话,直接转换下数据类型就好啦

Number("0000001")    // 这样就变成数字1啦
Number(0000001)      // 这样也可以变成数字1啦

并不需要js函数处理

PHP中文网

for (i = 0; i < $array.length; i++) {//这里的 i < $array.length是每一次重新取值的
所以i等于4的时候,$aray的长度也是4了,就不符合条件了;
推荐使用

isRepeat()

function isRepeat() {
    var $array = [0, 0, 0, 0, 0, 0, 0, 1]
    $array=$array.filter(function(x){if(x>0){return true}else{return false}})
}
ringa_lee

你可以这样写

isRepeat()
function isRepeat() {
  var $array = [0, 0, 0, 0, 0, 0, 0, 1],
      arr = []
  for (i = 0; i < $array.length; i++) {
    if ($array[i] > 0) {
      arr.push($array[i])
    } 
  }
  return arr;
}
黄舟

数组的长度是动态变化的,也就是说当i=4的时候,$array已经删除了前4个0,只剩下了4个数,这个时候$array.length是等于4的,so循环不满足条件无法进行。
至于你想实现的功能就非常简单了,可以在函数内声明一个空数组,然后存储$array中不等于0的数字,不用删除0,这样length就不会发生变化,最后return就行了;
其次还是按照你上面的思路,不用for循环,用$.each进行遍历,把等于0的都删掉,就只剩下了非0的数字;
思路还是比较多的,自己试试吧。

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

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