在使用jquery進(jìn)行開(kāi)發(fā)過(guò)程中,經(jīng)常需要進(jìn)行數(shù)據(jù)去重的操作。一種常見(jiàn)的數(shù)據(jù)格式就是json,如何對(duì)json數(shù)據(jù)進(jìn)行去重呢?下面就來(lái)介紹一下jquery json去重的方法。
首先,我們需要明確去重的標(biāo)準(zhǔn)是什么。以某個(gè)屬性為標(biāo)準(zhǔn)呢還是整個(gè)數(shù)據(jù)項(xiàng)都要一致呢?這里以整個(gè)數(shù)據(jù)項(xiàng)去重為例,代碼如下:
var data = [{ "name": "Tom", "age": "18", "sex": "male" }, { "name": "Jerry", "age": "20", "sex": "male" }, { "name": "Tom", "age": "18", "sex": "male" }]; var result = []; $.each(data, function(index, item) { var flag = true; $.each(result, function(i, da) { if (JSON.stringify(da) == JSON.stringify(item)) { flag = false; return false; } }); if (flag) { result.push(item); } }); console.log(result);
上述代碼中,我們定義了一個(gè)數(shù)據(jù)源數(shù)組data,和一個(gè)目標(biāo)數(shù)組result,其中result數(shù)組是用來(lái)存放去重后的數(shù)據(jù)的。首先我們使用$.each方法遍歷data數(shù)組,然后內(nèi)部再使用$.each方法遍歷result數(shù)組,判斷當(dāng)前數(shù)據(jù)項(xiàng)是否已經(jīng)存在于result數(shù)組中。如果存在,則不做任何操作,如果不存在則將該數(shù)據(jù)項(xiàng)加入到result數(shù)組中。
需要注意的是,在判斷兩個(gè)json數(shù)據(jù)是否相同時(shí),我們使用了JSON.stringify方法將其轉(zhuǎn)換成字符串再進(jìn)行對(duì)比,這是因?yàn)閖son數(shù)據(jù)項(xiàng)中屬性的順序可能不一致,無(wú)法直接進(jìn)行對(duì)比的緣故。
總結(jié),通過(guò)上述代碼,我們可以輕松實(shí)現(xiàn)jquery json的去重操作。在實(shí)踐過(guò)程中,可以根據(jù)自己的需要對(duì)去重標(biāo)準(zhǔn)進(jìn)行選擇。