const NewsType = [
? ? ? {
? ? ? ? name: "系統(tǒng)版本更新",
? ? ? ? key: 1
? ? ? },
? ? ? {
? ? ? ? name: "課程上線",
? ? ? ? key: 2
? ? ? },
? ? ? {
? ? ? ? name: "課程分配",
? ? ? ? key: 3
? ? ? },
? ? ? {
? ? ? ? name: "政策公告",
? ? ? ? key: 4
? ? ? },
? ? ? {
? ? ? ? name: "其他",
? ? ? ? key: 5
? ? ? },
? ? ? {
? ? ? ? name: "網(wǎng)盤(pán)通知",
? ? ? ? key: 6
? ? ? }
? ? ];
? ? // 如果經(jīng)常用瓤狐,可以考慮在原型鏈添加方法? 考慮到數(shù)組里面的字段可能不會(huì)一直都是 key ,name ,可以傳入option配置一下瞬铸,默認(rèn)的key=key, name=name
? ? // 原型鏈的時(shí)候最好直接用function,這樣里面的this就是方法前面的變量础锐,自己console看看就知道了
? ? Array.prototype.GetAnotherKey = function (val, option = {key:'key', name:'name'}) {
? ? ? const {key, name} = option;
? ? ? for(let i=0, count = this.length; i<count; i++){
? ? ? ? let item = this[i];
? ? ? ? // 多個(gè)值和同一個(gè)變量比較可以考慮用數(shù)組.indexOf嗓节,速度更快些,而且更明了舒服
? ? ? ? // ~這個(gè)符號(hào)用來(lái)移位的皆警,和二進(jìn)制算法有關(guān)系拦宣,具體我不清楚,但是可以把-1變成0 那么!0就是true了信姓, !!~意思就是如果name或key = val時(shí) 返回另一個(gè)
? ? ? ? if(!!~[item[name], item[key]].indexOf(val)){
? ? ? ? ? return item[key] == val ? item[name] : item[key];
? ? ? ? }
? ? ? }
? ? ? // 如果沒(méi)有則返回null
? ? ? return null;
? ? }
? ? // 如果想封裝需要循環(huán)的鸵隧,最好還是用js原生for循環(huán)性能會(huì)好點(diǎn),且最好緩存數(shù)組長(zhǎng)度
? ? // 注釋刪了就可以直接用了意推,看著嗨算流弊的樣子豆瘫,嘎嘎嘎,裝逼完畢菊值,【在下撤了】
? ? let a = NewsType.GetAnotherKey(6);
? ? let b = NewsType.GetAnotherKey("網(wǎng)盤(pán)通知");
? ? console.log(a);
? ? console.log(b);