我已付出你的jsfiddle:http://jsfiddle.net/limowankenobi/pak34wrz/
它仍然需要更多的工作,因爲我剛剛刪除重複項,不考慮日期。您應該可以修改它以根據您的要求使用日期。由陣列(參數column
)中的元素的屬性
第一個組的陣列(該參數data
):
我已經創建了兩個小的功能。
其結果將是一個對象(一個地圖),其屬性(鍵)是所選擇的列的唯一值,並且每個值將是與該鍵記錄的列表。
function groupBy(column, data) {
var groups = {};
data.forEach(function (itm) {
groups[itm[column]] = groups[itm[column]] || [];
groups[itm[column]].push(itm);
});
return groups;
}
第二個功能是將列表圖展平。它需要一個對象迭代對象的每個屬性(鍵)並選擇一個元素。在這種情況下,我選擇了第一個元素,但我相信你應該修改這個來根據日期選擇元素。
function uniquify(groups) {
var unique = [];
for (var key in groups) {
if (groups.hasOwnProperty(key)) {
unique.push(groups[key][0]);
}
}
return unique;
}
通過這種方式,做你需要看起來像什麼功能:
function arrUnique(arr) {
var groupsById = groupBy("_id", arr);
var uniqueIds = uniquify(groupsById);
var groupsByEmail = groupBy("email", uniqueIds);
return uniquify(groupsByEmail);
}
例如,groupBy("_id", arr)
結果是
{
"jkj238238jdsnfsj23": [
{
"_id": "jkj238238jdsnfsj23",
"email": "[email protected]",
"firstName": "John",
"lastName": "Smith",
"address": "123 Street St",
"entryDate": "2014-05-07T17:30:20+00:00"
},
{
"_id": "jkj238238jdsnfsj23",
"email": "[email protected]",
"firstName": "Ted",
"lastName": "Jones",
"address": "456 Neat St",
"entryDate": "2014-05-07T17:32:20+00:00"
},
{
"_id": "jkj238238jdsnfsj23",
"email": "[email protected]",
"firstName": "John",
"lastName": "Smith",
"address": "888 Mayberry St",
"entryDate": "2014-05-07T17:33:20+00:00"
}
],
"edu45238jdsnfsj23": [
{
"_id": "edu45238jdsnfsj23",
"email": "[email protected]",
"firstName": "Ted",
"lastName": "Masters",
"address": "44 North Hampton St",
"entryDate": "2014-05-07T17:31:20+00:00"
}
],
"wabaj238238jdsnfsj23": [
{
"_id": "wabaj238238jdsnfsj23",
"email": "[email protected]",
"firstName": "Fran",
"lastName": "Jones",
"address": "8803 Dark St",
"entryDate": "2014-05-07T17:31:20+00:00"
}
],
"sel045238jdsnfsj23": [
{
"_id": "sel045238jdsnfsj23",
"email": "[email protected]",
"firstName": "John",
"lastName": "Smith",
"address": "123 Street St",
"entryDate": "2014-05-07T17:32:20+00:00"
}
],
"qest38238jdsnfsj23": [
{
"_id": "qest38238jdsnfsj23",
"email": "[email protected]",
"firstName": "John",
"lastName": "Smith",
"address": "123 Street St",
"entryDate": "2014-05-07T17:32:20+00:00"
}
],
"vug789238jdsnfsj23": [
{
"_id": "vug789238jdsnfsj23",
"email": "[email protected]",
"firstName": "Blake",
"lastName": "Douglas",
"address": "123 Reach St",
"entryDate": "2014-05-07T17:33:20+00:00"
}
],
"wuj08238jdsnfsj23": [
{
"_id": "wuj08238jdsnfsj23",
"email": "[email protected]",
"firstName": "Micah",
"lastName": "Valmer",
"address": "123 Street St",
"entryDate": "2014-05-07T17:33:20+00:00"
}
],
"belr28238jdsnfsj23": [
{
"_id": "belr28238jdsnfsj23",
"email": "[email protected]",
"firstName": "Tallulah",
"lastName": "Smith",
"address": "123 Water St",
"entryDate": "2014-05-07T17:33:20+00:00"
}
]
}
然後對結果調用uniqify
通過_id分組我們得到:
[
{
"_id": "jkj238238jdsnfsj23",
"email": "[email protected]",
"firstName": "John",
"lastName": "Smith",
"address": "123 Street St",
"entryDate": "2014-05-07T17:30:20+00:00"
},
{
"_id": "edu45238jdsnfsj23",
"email": "[email protected]",
"firstName": "Ted",
"lastName": "Masters",
"address": "44 North Hampton St",
"entryDate": "2014-05-07T17:31:20+00:00"
},
{
"_id": "wabaj238238jdsnfsj23",
"email": "[email protected]",
"firstName": "Fran",
"lastName": "Jones",
"address": "8803 Dark St",
"entryDate": "2014-05-07T17:31:20+00:00"
},
{
"_id": "sel045238jdsnfsj23",
"email": "[email protected]",
"firstName": "John",
"lastName": "Smith",
"address": "123 Street St",
"entryDate": "2014-05-07T17:32:20+00:00"
},
{
"_id": "qest38238jdsnfsj23",
"email": "[email protected]",
"firstName": "John",
"lastName": "Smith",
"address": "123 Street St",
"entryDate": "2014-05-07T17:32:20+00:00"
},
{
"_id": "vug789238jdsnfsj23",
"email": "[email protected]",
"firstName": "Blake",
"lastName": "Douglas",
"address": "123 Reach St",
"entryDate": "2014-05-07T17:33:20+00:00"
},
{
"_id": "wuj08238jdsnfsj23",
"email": "[email protected]",
"firstName": "Micah",
"lastName": "Valmer",
"address": "123 Street St",
"entryDate": "2014-05-07T17:33:20+00:00"
},
{
"_id": "belr28238jdsnfsj23",
"email": "[email protected]",
"firstName": "Tallulah",
"lastName": "Smith",
"address": "123 Water St",
"entryDate": "2014-05-07T17:33:20+00:00"
}
]
如果我們現在組這樣的結果通過電子郵件,我們得到:
{
"[email protected]": [
{
"_id": "jkj238238jdsnfsj23",
"email": "[email protected]",
"firstName": "John",
"lastName": "Smith",
"address": "123 Street St",
"entryDate": "2014-05-07T17:30:20+00:00"
},
{
"_id": "sel045238jdsnfsj23",
"email": "[email protected]",
"firstName": "John",
"lastName": "Smith",
"address": "123 Street St",
"entryDate": "2014-05-07T17:32:20+00:00"
},
{
"_id": "qest38238jdsnfsj23",
"email": "[email protected]",
"firstName": "John",
"lastName": "Smith",
"address": "123 Street St",
"entryDate": "2014-05-07T17:32:20+00:00"
},
{
"_id": "wuj08238jdsnfsj23",
"email": "[email protected]",
"firstName": "Micah",
"lastName": "Valmer",
"address": "123 Street St",
"entryDate": "2014-05-07T17:33:20+00:00"
}
],
"[email protected]": [
{
"_id": "edu45238jdsnfsj23",
"email": "[email protected]",
"firstName": "Ted",
"lastName": "Masters",
"address": "44 North Hampton St",
"entryDate": "2014-05-07T17:31:20+00:00"
},
{
"_id": "belr28238jdsnfsj23",
"email": "[email protected]",
"firstName": "Tallulah",
"lastName": "Smith",
"address": "123 Water St",
"entryDate": "2014-05-07T17:33:20+00:00"
}
],
"[email protected]": [
{
"_id": "wabaj238238jdsnfsj23",
"email": "[email protected]",
"firstName": "Fran",
"lastName": "Jones",
"address": "8803 Dark St",
"entryDate": "2014-05-07T17:31:20+00:00"
}
],
"[email protected]": [
{
"_id": "vug789238jdsnfsj23",
"email": "[email protected]",
"firstName": "Blake",
"lastName": "Douglas",
"address": "123 Reach St",
"entryDate": "2014-05-07T17:33:20+00:00"
}
]
}
最後將在此uniqify
導致:
[
{
"_id": "jkj238238jdsnfsj23",
"email": "[email protected]",
"firstName": "John",
"lastName": "Smith",
"address": "123 Street St",
"entryDate": "2014-05-07T17:30:20+00:00"
},
{
"_id": "edu45238jdsnfsj23",
"email": "[email protected]",
"firstName": "Ted",
"lastName": "Masters",
"address": "44 North Hampton St",
"entryDate": "2014-05-07T17:31:20+00:00"
},
{
"_id": "wabaj238238jdsnfsj23",
"email": "[email protected]",
"firstName": "Fran",
"lastName": "Jones",
"address": "8803 Dark St",
"entryDate": "2014-05-07T17:31:20+00:00"
},
{
"_id": "vug789238jdsnfsj23",
"email": "[email protected]",
"firstName": "Blake",
"lastName": "Douglas",
"address": "123 Reach St",
"entryDate": "2014-05-07T17:33:20+00:00"
}
]
那怎麼操作呢? – MinusFour
*這必須在純JavaScript中完成。這裏是我迄今爲止的代碼:*對不起,你只有**數據**。顯示一些實際的代碼。 –
堆棧溢出是一個網站,您可以用迄今爲止嘗試過的方式呈現問題。然後我們可以解決這個問題。但是你不能要求我們爲你寫代碼,你必須出示你自己的代碼。 –