js数组中 删除重复对象 有什么快速的方法

JavaScript020

js数组中 删除重复对象 有什么快速的方法,第1张

最笨的方法是用对象的键值对做标记,如:

var arr=[1,2,3,4,5,6,4]

function check(data){//data一定是数组

    if(!data) data=[]

    return data

    if(data.length==0) return data

    

    var _obj={}//用于标记

    var newArr=[]//删除重复后的数组

    for(var i=0i<data.lengthi++){

        var val=data[i]

        if(obj[val]||obj[val]==0){//已结存在,注意值为0时if(0){}的判断--永远为false

            continue

        }else{

            obj[val]=val//把val以键值对的形式存入obj

            newArr.push(val)

        }

    }

    

    return newArr//返回删除重复的数组

}

var arr1=check(arr)//结果为:[1,2,3,4,5,6]

你在动态添加每一行的时候应该给此行 tr 添加一个 class,例如 <tr class="data">说明此行为数据,这样在操作的时候会方便很多,不会影响其它 tr,例如标题栏(条形码、商品编码)。

<script type="text/javascript">

window.onload = function() {

    // 这里的 add 要对应你添加单据按钮的 id

    document.getElementById("add").onclick = function() {

        // 这里的 table 要对应你表单的 id

        var table = document.getElementById("table"),

            data_rows = table.getElementsByTagName("tr")

        for(var i = data_rows.length - 1i >= 0i--) {

            // 这里的 data 要对应数据行的 class

            if(data_rows[i].className.indexOf("data") >-1) {

                var cells = data_rows[i].getElementsByTagName("td")

                // 只检查前面 9 个 td,忽略备注和操作

                for(var a = 0a <9a++) {

                    // 无内容

                    if(cells[a].innerHTML === "") {

                        // 删除此行

                        table.deleteRow(i)

                        break

                    }

                }

            }

        }

    

        // tr 删除完毕,继续其它工作

        // ...

    }

}

</script>

遇到这种情况你要学会自己去验证,这是我写得一小段代码,你试着运行一下,然后再改变函数的传递参数,比如换成0,就会得到另外一个结果。

function test(x) {

var a = x

if(!a) {

return 0

}

elsereturn 1

}

var b = test(3)

alert(b)

总结:return语句在函数中使用,用于返回相应的值,有些时候你还会见到return false之类的语句,如果出现这样的语句,函数将就此结束,不再往下执行了。至于if语句就不用多说了吧,非0为真,例如(!0);0即假,如(!3)等。