感受有一段時間沒寫博客,最近項目上面這兩個是比較實在而且實用的方法。其中效率我的不談,可是我都單獨抽離成了方法,須要的同窗自取。html
/*數組排序算法算法
增長過濾空數組
* 第一個參數:排序的數組
*第二個參數:根據數組中的哪一個字段排序
* 第三個字段:是升序仍是降序,true(升序),false(降序)
* */
,arrySort:function (arry,fil,t) {數組
//過濾空數組
函數
//對於 false,null,0,undefiend,NaN直接取!獲得的都是true,所以這裏只須要在判斷空字符串"";
let arryn=arry.filter(function (val) { return !(!val || val === ""); });
let condition=function(field,tr){
//第二個參數不傳遞狀況下,默認從小到大排序
if(tr==undefined){
tr=-1;
}else {
tr=(tr) ? 1 : -1
}
return function (a,b) {
a=a[field];
b=b[field];code
if(a<b){
return tr*-1;
}
if(a>b){
return tr*1;
}
return 0;
}
};
return arry.sort(condition(fil,t));
}
/*
兩個數組區分相同和不一樣
參數1:須要篩選的數組,最大的數組
參數2:做爲標記的數組,
參數3:拿來作比較的字段
*/
,separate:function (coulist,arry2,filed) {
let newcou=[];
let coulist2=coulist;htm
//console.log(setids);對象
for (let k = 0; k < arry2.length; k++) {排序
for(let i=0;i<coulist.length;i++) {字符串
if (coulist[i].filed == arry2[k].filed) {
//爲已經送券的打標記,標記已經送券,而後返回新數組
let cesh= coulist[i];
cesh.bindcheck="true";//當時業務須要標記分離出來的數據博客
newcou.push(coulist[i]);
//剔除相同部分數據,獲得不一樣數據,注意必須放在最後剔除,不然發生數據錯誤問題
coulist2.splice(i,1);
i=i-1;//注意這裏js的splice函數改變原數組是改變源數組,瞭解知識(js對象的賦值和複製)
}
}
}
//最後拼接兩個數組獲得新數組,把不一樣的放在了前面,這裏根據業務須要來作
let newcoulist=newcou.concat(coulist2);
//console.log(newcou);
//返回新數組
return newcoulist
}