数组原型,获取key或value

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

        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);

你可能感兴趣的:(数组原型,获取key或value)