簡単なアルゴリズムでデータをフィルタリングする機能を実現します.
2730 ワード
phone-->im-->sys_メッセージ.
テンプレートで対応するjsを実行し、フィルタしたデータを取り出してレンダリングします.
geiDataKey()方法は、各タイプの固有ID(プライマリキーとは異なり、システムメッセージを生成するごとに新しいプライマリキーが生成されるが、コンテンツは同じである可能性が高い.)
set DataMsg()方法はフィルタリングの中心であり、2層の循環を行い、1層目は基数であり、2層目のデータはフィルタリングされた部分データである.その後、第1層のデータを第2層のデータと比較し、重複が発見されたらループを飛ばし、dataMsgにデータを追加しない.重複がないと発見されたらdataMsgにデータを追加する.
showData()メソッドは、フィルタリングされたデータを返します.data MsgApppは、ページが閉じられていない場合、新規に追加された検証メッセージをレンダリングします.dataMsgAppは方法実行時に初期化されますので、現在送信されている新しい検証メッセージしかありません.この検証メッセージは、以前のdataMsgのすべての検証メッセージと同じ方法で比較される.
テンプレートで対応するjsを実行し、フィルタしたデータを取り出してレンダリングします.
<%
var dataObj = repeatMsg.showData(data);
for (var key in dataObj) {
%>
repeat Msg.showDataは主なフィルタリング方法です.var repeatMsg = (function(){
var repeatObj = {};
var dataMsg = [],dataMsgApp=[];
repeatObj.showData = function(data){
dataMsgApp=[];
var len = dataMsg.length
if(len==0 && data.length>0){
repeatObj.setDataMsg(data);
return dataMsg;
}else{
repeatObj.setDataMsg(data);
return dataMsgApp;
}
};
repeatObj.setDataMsg = function(data){
for(var i = 0; i< data.length;i++){
if(dataMsg.length == 0){
dataMsg.push(data[i]);
}else{
var temp = true;
for(var j = 0; j< dataMsg.length;j++){
var dataMsgkey = repeatObj.getDataKey(dataMsg[j]);
var datakey = repeatObj.getDataKey(data[i]);
if(dataMsgkey == datakey){
temp = false;
break;
}
}
if(temp){
dataMsg.push(data[i]);
dataMsgApp.push(data[i]);
}
}
}
};
repeatObj.getDataKey = function(data){
var type = data.extra.type;
if(type == 'ms-0002' || type == "ms-0003"){
var ms_extra_info = data.extra.ms_extra_info;
return ms_extra_info.im_group_id+"_"+ms_extra_info.user_code;
}
if(type == 'ms-0001'){
return data.extra.ms_extra_info.user_code;
}
if(type == 'ms-0006'){
return data.extra.group_id;
}
return "";
};
return repeatObj;
})();
以上のコードの構造はvar k=(function(){}().内部functionの位置はkと等価ですので、ページが閉じられていない場合は、function内部の変数のデータは初期化されません.geiDataKey()方法は、各タイプの固有ID(プライマリキーとは異なり、システムメッセージを生成するごとに新しいプライマリキーが生成されるが、コンテンツは同じである可能性が高い.)
set DataMsg()方法はフィルタリングの中心であり、2層の循環を行い、1層目は基数であり、2層目のデータはフィルタリングされた部分データである.その後、第1層のデータを第2層のデータと比較し、重複が発見されたらループを飛ばし、dataMsgにデータを追加しない.重複がないと発見されたらdataMsgにデータを追加する.
showData()メソッドは、フィルタリングされたデータを返します.data MsgApppは、ページが閉じられていない場合、新規に追加された検証メッセージをレンダリングします.dataMsgAppは方法実行時に初期化されますので、現在送信されている新しい検証メッセージしかありません.この検証メッセージは、以前のdataMsgのすべての検証メッセージと同じ方法で比較される.