「代码片段」两段略奇怪的 JS 代码

吐槽/反馈/建议:我的咸鱼心  爱发电-@wdssmq

2024-03-13:

又研究了一段不明所以的代码,然后想起来之前也搞过一段,就合并在一起了,然后发现当年那段迷惑程度要高不少。。

数组中按间隔提取元素:

(() => {
    const allNum = 21;
    const perNum = 4;

    /**
     * @param {int} all  元素总数
     * @param {int} per 用于将 all 先分成 per 个一组
     * @param {int} offset 通过计算决定从第几个元素开始取,大于等于 0,上不设限
     * @returns {string} 返回一个字符串,每 per 个元素换行
     */
    function fnPickArr(all, per, offset = 0) {
        const rltArr = [];

        // const chunkNum = Math.floor(all / per);
        // ↑ floor 为向下取整,会出现取到 per + 1 个元素的情况
        const chunkNum = Math.ceil(all / per);
        // ↑ ceil 为向上取整,与 floor 相反,会出现取到 per - 1 个元素的情况

        // 本质上就是每隔 chunkNum - 1 个元素取一次,两次取余判断

        for (let i = 0; i < all; i++) {
            if (i % chunkNum === offset % chunkNum) {
                // rltArr[i] = "*";
                rltArr[i] = i % per + 1;

            } else {
                rltArr[i] = "#";
            }
        }

        // 遍历 rltArr,拼接为字符,每 per 个元素换行
        let rltStr = "";
        for (let i = 0; i < rltArr.length; i++) {
            rltStr += rltArr[i];
            if ((i + 1) % per === 0) {
                rltStr += "\n";
            }
        }
        return rltStr;
    }

    for (let i = 0; i < 6; i++) {
        console.log(fnPickArr(allNum, perNum, i));
    }
})();

「- -」「- -」「- -」

在研究缓存失效时间时开的一个脑洞,,虽然不是很清楚有什么实用价值:

(() => {
    let m;
    let lstM;
    let lstN;
    for (let n = 0; n <= 50; n++) {
        if (!m) {
            m = n + 5;
            lstN = n - 1;
        }
        if (m <= n) {
            if (n !== 11 && n !== 12 && n !== 21) {
                // if (1 == 1) {
                fnLog([m - n, m, n, n - lstN, "do some thing"]);
                lstM = m;
                m = n + n - lstN;
                lstN = n + n - lstM;
            } else {
                fnLog([m - n, m, n, n - lstN, "skip"]);
            }
        } else {
            fnLog([m - n, m, n, n - lstN]);
        }
    }
    // ----------------------------
    function fnLog(n) {
        if (Object.prototype.toString.call(n) === "[object Array]") {
            a = n.join(" , ");
        }
        // document.getElementById("debug").innerHTML += a + "<br />";
        console.log(a);
    }
})();


爱发电

本文标题:《「代码片段」两段略奇怪的 JS 代码》作者:沉冰浮水
原文链接:https://www.wdssmq.com/post/20160621482.html
特别注明外均为原创,转载请注明。

分享到微信

扫描二维码

可在微信查看或分享至朋友圈。

相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

网站分类

  • 订阅本站的 RSS 2.0 新闻聚合

搜索

本周旧文

近期观影记录:超级马里奥,死侍与金刚狼。。

搬家也告一段落,虽然搬过来的东西还得归置,新衣柜虽说已经散俩月味儿了,但还是不想放衣服进去。

要不我每年汇总整理一次??碎雨集_沉冰浮水_第1页

所以,不带这条的话,2024 年目前只发了 13 条嘟????

VSCode 内 git 操作卡住的时候没办法主动取消一直是个痛点,一般都是推送或拉取,今天连提交都卡了。。

又一个夏天过去了,所以今年也没买防水鞋套;然后天凉了,为了应对踢被子买了睡袋,不知道 1.2 米会不会略窄。。

《五至七时的克莱奥》,2018 年 6 月加入列表,21 年 11 月底发现 B 站上线了这部,直到前几天才看完,还是分两次看的。。接下来有五项是 2019 年的,都是电影 —— 略长的待办列表。。

有用程序自动抓取自己带 tag 的嘟,然后按年备份后从线上删除;刚发现去年的数据有备份但是没删线上??和本地数据对比后发现线上的还少一条,Why??

本质上,每个人需要的是「让自己面临的问题得到解决」的能力。。

这又涉及到直接能力和间接能力,,缺乏直接能力很正常,视情况可以通过学习来掌握直接能力,或者「请」有直接能力的人来帮自己解决。。

缺乏间接能力的情况是真没救,尤其是对「这是**我自己**面临的问题」这一前提没有明确认知的人。。

其实,在认知意义上,焦虑时我知道这种情绪对应「焦虑」这个文法词汇,此外还有「压抑」「悲伤」等等,然而「抑郁」其实是个我认知体系外的词,虽然经常一些情绪感受我找不到对应的语言词汇来表述,却也只能将其实表述为「找不到对应的语言词汇来表述」的某些感受。。

爱发电支持者

最新留言

友情链接