const NewsType = [
{
name: "系统版本更新",
key: 1
},
{
name: "课程上线",
key: 2
},
{
name: "课程分配",
key: 3
},
{
name: "政策公告",
key: 4
},
{
name: "其他",
key: 5
},
{
name: "网盘通知",
key: 6
}
];
// 如果经常用,可以考虑在原型链添加方法 考虑到数组里面的字段可能不会一直都是 key ,name ,可以传入option配置一下,默认的key=key, name=name
// 原型链的时候最好直接用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];
// 多个值和同一个变量比较可以考虑用数组.indexOf,速度更快些,而且更明了舒服
// ~这个符号用来移位的,和二进制算法有关系,具体我不清楚,但是可以把-1变成0 那么!0就是true了, !!~意思就是如果name或key = val时 返回另一个
if(!!~[item[name], item[key]].indexOf(val)){
return item[key] == val ? item[name] : item[key];
}
}
// 如果没有则返回null
return null;
}
// 如果想封装需要循环的,最好还是用js原生for循环性能会好点,且最好缓存数组长度
// 注释删了就可以直接用了,看着嗨算流弊的样子,嘎嘎嘎,装逼完毕,【在下撤了】
let a = NewsType.GetAnotherKey(6);
let b = NewsType.GetAnotherKey("网盘通知");
console.log(a);
console.log(b);
网友评论