上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

for of 对象数组时如何获取下标

[复制链接]
  • TA的每日心情
    郁闷
    2022-6-21 18:22
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    5

    主题

    8

    帖子

    22

    积分

    助理工程师

    Rank: 1

    积分
    22
    发表于 2022-3-20 14:50:35 | 显示全部楼层 | 阅读模式
    1油猫币
        showByteLen() {

            let i,
                text,
                byte,
                byteId,
                bytelen;

            //计算字符串字节长度
            let byteLen = str => {

                let bytelen = 0;

                if (str != undefined) {

                    if (str == "" || str.length == 0) {

                        return bytelen;

                    } else {

                        for (let i in str) {

                            if (str.charCodeAt(i) > 255) {

                                bytelen += 2;
                            }
                            else {

                                bytelen++;
                            }
                        }
                        return bytelen;

                    }
                }

            }
            for (let c of this.content_text) {
                //console.log(i);

                //获取评论内容
                text = c.innerText;
                //console.log(this.content_text);
                //console.log(Object.values(this.content_text).indexOf(c));


                //字节长度
                bytelen = byteLen(text);

                //创建显示字节长度的标签

                //byteId = "byte" + i;//报错
                byteId = "byte" + Object.values(this.content_text).indexOf(c);
                let ele = document.createElement("div");
                ele.setAttribute("id", byteId);
                ele.innerText = "is null";

                //将标签添加在评论下面
                c.appendChild(ele);
        }
    }
    我用for in时最后会有一个entries,导致appendChild报错,所以改成for of,
    我想要与this.content_text对象同步的下标值,
    除去Object.values(this.content_text).indexOf(c)写法还有没有更方便的写法了




  • TA的每日心情

    2022-6-4 20:51
  • 签到天数: 32 天

    [LV.5]常住居民I

    332

    主题

    2896

    帖子

    2908

    积分

    荣誉开发者

    非物质文化遗产社会摇传承人

    Rank: 10Rank: 10Rank: 10

    积分
    2908

    猫咪币纪念章

    发表于 2022-3-20 15:36:41 | 显示全部楼层
    for of印象里是没法获取下标的...
    至于更简单的方法坐等其他人给个解了
    我基础比较差...
    几种for循环都没记全
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    前天 13:15
  • 签到天数: 120 天

    [LV.7]常住居民III

    41

    主题

    355

    帖子

    1705

    积分

    荣誉开发者

    累计点滴改进,迈向完美品质。

    Rank: 10Rank: 10Rank: 10

    积分
    1705

    活跃会员三好学生中秋纪念章国庆纪念章热心会员推广达人宣传达人突出贡献猫咪币纪念章

    发表于 2022-3-20 16:02:49 | 显示全部楼层
    本帖最后由 Hangover 于 2022-3-20 16:08 编辑

    for of获取数组对象下标
    1. let arr = [
    2.     { "key": 1, "value": 123 },
    3.     { "key": 2, "value": 1234 },
    4.     { "key": 3, "value": 12345 },
    5.     { "key": 4, "value": 123456 },
    6.     { "key": 5, "value": 1234567 },
    7. ]
    8. for (let i of arr.keys()) {
    9.     console.log(i,arr[i])
    10. }

    11. // => 0 {key: 1, value: 123}
    12. // => 1 {key: 2, value: 1234}
    13. // => 2 {key: 3, value: 12345}
    14. // => 3 {key: 4, value: 123456}
    15. // => 4 {key: 5, value: 1234567}
    复制代码



    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2022-6-12 21:47
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    9

    主题

    226

    帖子

    180

    积分

    中级工程师

    Rank: 5Rank: 5

    积分
    180

    中秋纪念章猫咪币纪念章活跃会员热心会员三好学生

    发表于 2022-3-20 16:15:07 | 显示全部楼层
    据说 for (i = i; i < len; i++) 这种最快
    据说 字符串能转数组
    据说 获取字节长度不是那么简单哦,要考虑中文日文外星文。。。
    得蹲个大佬来
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    10

    主题

    355

    帖子

    433

    积分

    荣誉开发者

    Rank: 10Rank: 10Rank: 10

    积分
    433

    活跃会员热心会员突出贡献三好学生猫咪币纪念章中秋纪念章国庆纪念章

    发表于 2022-3-20 20:23:14 | 显示全部楼层
    1. for (let [index, c] of this.content_text.entries())
    复制代码

    但是老实说这个做法有点“不务正业”,for...of设计出来就是只关心值不关心下标的,如果你想用下标遍历,直接传统for循环就可以了。另外for...in是用来遍历对象属性的,不应用于数组。
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表