如何将嵌套数组存储在tanpermonkey, 再通过元素排序显示到控制台?

发布于 2022-09-12 22:17:54 字数 2854 浏览 12 评论 0

我想把网站打开的次数和时间存储在tampermonkey,我直接存储发现不能排序,因为数组没有名称,如何将嵌套数组存放在tampermonkey,再通过次数排序,显示到控制台?

在这个脚本上添加了count函数https://greasyfork.org/zh-CN/scripts/404859

function count(a) {
        let d = new Date();

        if(GM_getValue(a)){
            GM_setValue(a, {
                'times': GM_getValue(a).times + 1,
                'date': d
            });
        }else{
            GM_setValue(a, {
                'times': 1,
                'date': d
            });
        }
    }

油猴存储数据

{
    "Github": {
        "times": 1,
        "date": "2021/01/31 4:5:1"
    },
    "Google": {
        "times": 2,
        "date": "2021/01/31 12:11:33"
    },
    "Greasyfork": {
        "times": 1,
        "date": "2021/01/31 4:1:21"
    },
}

然后我发现对数组排序的方法,需要存放在有名字的嵌套数组里面,这样写了只能存放当前打开的图标网站的次数和时间,打开其他的图标网站会被覆盖

function count(a) {
        let d = new Date();
        
        if(GM_getValue('Times')){
            GM_getValue('Times').forEach(function(value) {
                if(value.name === a){
                    var m = [{
                        'name': a,
                        'times': value.times + 1,
                        'date': timetext
                    }]

                    GM_setValue('Times', m);
                }else{
                    m = [{
                        'name': a,
                        'times': 1,
                        'date': timetext
                    }]
                    GM_setValue('Times', m);
                }
            });
        } else {
            var m = [{
                'name':a,
                'times': 1,
                'date': timetext
            }]
            GM_setValue('Times', m);
        }
    }

数组排序的方法

 let allValue = GM_listValues();
    allValue.splice(allValue.indexOf('search'),1);

    allValue.sort(compare( "times"));

    function compare( propertyName) {
        return function( object1, object2) {
            var value1 = object1[propertyName];
            var value2 = object2[propertyName];
            if (value1 < value2) {
                return 1;
            } else if (value1 > value2) {
                return - 1;
            } else {
                return 0;
            }
        }
    }

如果油猴存放的数据是嵌套数组,就可以调用排序的函数了,达到的效果是这样

{
    "search": "",
    "Times": [
        {
            "name": "Github",
            "times": 6,
            "date": "2021/01/31 18:43:15"
        },
        {
            "name": "Google",
            "times": 4,
            "date": "2021/01/31 18:43:15"
        },
        {
            "name": "Greasyfork",
            "times": 1,
            "date": "2021/01/31 18:43:15"
        }
    ]
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甩你一脸翔 2022-09-19 22:17:54

读取存储在tampermonkey数据,存在新建的数组里面,再排序

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文