var aa=[12,2,1,3,4,5,2,3,1,56]; //用于测试的数组//用于去掉数组中重复的元素
function unique(arr) {
    var result = [], hash = {};
    for (var i = 0, elem; (elem = arr[i]) != null; i++) {
        if (!hash[elem]) {
            result.push(elem);
            hash[elem] = true;
        }
    }
    return result;
}//下面是测试的代码
var bb=unique(aa);
for(var a in bb){
document.write(bb[a]+"<br>");
}请高手们给unique函数添加详细的注释!谢谢!

解决方案 »

  1.   

    function unique(arr) {
        var result = [],/*定义一个数组*/ hash = {};/*对象*/
        for (var i = 0, elem; (elem = arr[i]) != null; i++) {//如果arr[i]不是null就循环
            if (!hash[elem]) {//如果hash对象中没有elem属性(未定义)就执行下面的
                result.push(elem);//添加到数组中
                hash[elem] = true;//设置hash的当前elem属性是true值
            }
        }
        return result;
    }
      

  2.   

    function unique(arr) {
        var result = [];//存放过滤后的结果。
        var hash = {};//用map把不重复的数据放进去,当以后再有相同数据的话,就不会再往result里放了。
        for (var i = 0, elem; (elem = arr[i]) != null; i++) {
            if (!hash[elem]) {//当hash里没有此(elem)时,向result里放。
                result.push(elem);
                hash[elem] = true;//设置此元素已经存放过的标志
            }
        }
        return result;
    }
    不过这段代码没有处理["1", 1]这样的数据,正常情况下应该认为是不同的,但这段代码没作处理!