规则是这样的:
在一个数组里,不知道数组的长度,元素是动态添加的
数组中只能有一个相同的元素可以存在多个,当有一个相同的元素存在多个时别的元素就只能存在一个,不然就报错,谢谢大家
比如:
1,1,2,2这种是错误的
1,1,2这种就是正确的

解决方案 »

  1.   

    function check(arr) {
        var dict = {};
        var count = 0;
        for (var i = 0; i < arr.length; i++) {
            if (dict[arr[i]]) { // 重复出现
                count++;
                if (count > 1) return false;
            }
            dict[arr[i]] = true;
        }
        return true;
    }alert([
        check([1,1,2,2]), //false
        check([1,1,2]), //true
        check([1,2,2]), //true
        check([2,1,2]), //true
        check([1,2,3,4,5,6,7,8,9,1]), //true
        check([1,2,3,4,5,6,7,8,9,1,2]) //false
    ]);//false,true,true,true,true,false
      

  2.   

    JS里面有个类似MAP的东西
    var check=new Array()
    for(var i=0;i<aa.lenth;i++){
        if(typeos(check[aa.eq(i)])=='undefined'){
          check[aa.eq(i)]=aa.eq(i)
        }else{
          alert("数组中有重复数据")    
    }
    }
      

  3.   

    不一样就是不一样,呵呵,有一点语法不大明白,就是那个dict,定义的时候它是什么呢?看意思像是一个数组?判断的那个语法,怎么就那样呢?清洁工能解释一下不能?????????????????????
      

  4.   

    dict = {} <--> dict = new Object()dict["a"] = true; <--> dict.a = true;dict就是一个对象类型
    通过操作它的属性来判断是否出现过重复。如果没有赋值dict[1]为undefined
    dict[1] = true;
    赋值后dict[1]为true。这是js对象的特性,可以动态添加属性。
    js对象属性以hash表的形式存储,所以访问很快。这也就是最简单对象处理,囧
      

  5.   

    我的方案如下:
    //IE没有实现Array的indexOf方法,所以自己实现
    if (!Array.prototype.indexOf) {

    Array.prototype.indexOf = function(elt/*, from*/) {

    var len = this.length;
    var from = Number(arguments[1]) || 0;

    from = (from < 0) ? Math.ceil(from) : Math.floor(from);

    if (from < 0) {
    from += len;
    } for (; from < len; from++) {
    if (from in this && this[from] === elt) {
    return from;
    }
    }

    return -1;
    };
    }
    //#End实现indexOf方法 /**
     * Class: FunArray
     */
    function FunArray() {
    this.hasDouble = false;
    this.array = new Array();
    }FunArray.prototype.add = function (newItem) {

    if (this.array.indexOf(newItem) == -1) {
    this.array.push(newItem);
    } else if (!this.hasDouble) {
    this.array.push(newItem);
    this.hasDouble = true;
    } else {
    return false;
    }

    return true;
    };FunArray.prototype.getArray = function () {
    return this.array;
    }FunArray.prototype.toString = function () {
    return this.array.toString();
    }//#End Class FunArray测试:
    function addLog (msg) {
    var logBox = document.getElementById("log");
    logBox.innerHTML +=  "<div>" + msg + "</div>";
    }
    window.onload = function () {
    var fa = new FunArray(); fa.add(1);
    fa.add(2);
    fa.add(3);
    if (fa.add(2)) {
    addLog("2添加成功");
    } else {
    addLog("2添加失败");
    } fa.add(4); if (fa.add(1)) {
    addLog("1添加成功");
    } else {
    addLog("1添加失败");
    } fa.add(5);
    fa.add(4);
    fa.add("Java");
    fa.add("PHP");
    fa.add("Java");
    fa.add("Ruby");

    addLog("toString: " + fa.toString());
    };欢迎指出错误和交流!
      

  6.   

    用this.length获取长度 再循环
      

  7.   

    function check(arr) {
        var dict = {};
        var last;
        for (var i = 0; i < arr.length; i++) {
            if (dict[arr[i]]) { // 重复出现
                if (typeof last != "undefined" && last != arr[i]) return false;
                last = arr[i];
            }
            dict[arr[i]] = true;
        }
        return true;
    }alert([
        check([1,1,2,2]), //false
        check([1,1,2]), //true
        check([1,1,1,2]), //true
        check([1,2,1,3,1]), //true
        check([1,2,1,3,2]), //false
    ]);
      

  8.   

    哈希表不能重复,好方法。明白了。
    清洁工,你写了8年Delphi,写了几年js啊?
      

  9.   

    楼上果然强悍
    <script type="text/javascript">
    function check(arr) {
        var dict = {};
        var count = 0;
    //统计每个元素出现次数
        for (var i = 0; i < arr.length; i++) {
            if (dict[arr[i]]) { // 重复出现
                dict[arr[i]]++;
            }
    else{
             dict[arr[i]] = 1;
    }
        }
    //判断元素出现次数>1的元素个数
    for(ob in dict){
       if(dict[ob]>1){
          count++;
       }
    }
    if(count>1){
          return false;
    }
    return true;
    }
    alert([
        check([1,1,2,2]), //false
        check([1,1,2]), //true
        check([1,2,2]), //true
        check([2,1,2]), //true
        check([1,2,3,4,5,6,7,8,9,1]), //true
        check([1,2,3,4,5,6,7,8,9,1,2]), //false
    check([1,1,1,1,1,2,3]),//true
    check([1,2,3]) //true
    ]);
    </script>
      

  10.   

    function check(arr) {
    return !/(?:^|,)(\d*,)\1+(?:\d*,)*(\d*,)\2+/.test([].concat(arr).sort()+",")
    }alert([
        check([1,1,2,2]), //false
    check([1,1,1,2]), //true
        check([1,1,2]), //true
        check([1,2,2]), //true
        check([2,1,2]), //true
        check([1,2,3,4,5,6,7,8,9,1]), //true
        check([1,2,3,4,5,6,7,8,9,1,2]) //false
    ]);
      

  11.   

    这个方法数字重复次数超过3次的时候就不管用了,像这种的check([1,2,2,2,2])
      

  12.   

    function check(arr) {
        return !/\b(\d+)(,\1\b)+.*\b(\d+)(,\3\b)+/.test(arr.sort());
    }alert([
        check([1,1,2,2]), //false
        check([1,1,1,2]), //true
        check([1,1,2]), //true
        check([1,2,2]), //true
        check([2,1,2]), //true
        check([1,2,3,4,5,6,7,8,9,1]), //true
        check([1,2,3,4,5,6,7,8,9,1,2]), //false
        check([1,2,2,2,2]) //false
    ].join("\n"));
      

  13.   

    得改改。
    function check(arr) {
        var m = ("" + arr.sort()).match(/\b(\d+)(,\1\b)+/g);
        return !(m && m.length > 1);
    }alert([
        check([1,1,2,2]), //false
        check([1,1,1,2]), //true
        check([1,1,2]), //true
        check([1,2,2]), //true
        check([2,1,2]), //true
        check([1,2,3,4,5,6,7,8,9,1]), //true
        check([1,2,3,4,5,6,7,8,9,1,2]), //false
        check([1,2,2,2,2]) //true
    ].join("\n"));
      

  14.   

    var count=0;
    var i;
    var=j;
    var value;
    var arr = new Array(); 
    for(i=0;i<arr.length-1;i++){
        for(j=i+1;j<arr.length;j++){
          if((arr[i]=arr[j])&&(arr[i]!=value)){
           value=arr[i];
           count++;      
          } 
        }
    }if(count>1){
      alert("错了");
    }