美文网首页
数组原型,获取key或value

数组原型,获取key或value

作者: 漂亮假动作 | 来源:发表于2021-06-21 16:43 被阅读0次

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

    相关文章

      网友评论

          本文标题:数组原型,获取key或value

          本文链接:https://www.haomeiwen.com/subject/dwwyyltx.html