查看: 2909|回复: 4

[有事请教] 请问如下代码究竟是什么意思呢?

[复制链接]
梦石
0
星屑
1926
在线时间
640 小时
注册时间
2012-1-31
回帖
61
发表于 2020-4-27 02:09:07 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 脚本盲 于 2020-4-27 02:19 编辑

var ary = ['1','3','4'];
for (var key in $gameSelfSwitches._data) {
    console.log(key)
    if (key.match(/(\d+),\d+,[ABCD]/)) {
        if (ary.contains(RegExp.$1)){
            $gameSelfSwitches._data[key] = false;
        }
    }
梦石
0
星屑
1926
在线时间
640 小时
注册时间
2012-1-31
回帖
61
 楼主| 发表于 2020-4-27 02:09:57 | 显示全部楼层
这个是在Yanna的范例包里看到的。
回复

使用道具 举报

梦石
2
星屑
6767
在线时间
501 小时
注册时间
2018-3-23
回帖
487

R考场第七期银奖

发表于 2020-4-27 08:52:08 | 显示全部楼层
建议参见正则表达式相关的内容,来更好的理解。
$gameSelfSwitches._data[id]表示游戏的第id号开关。
这个意思也很好理解,因为一般对开关的存储键值是 mapid, eventid, switchid 这样的形式,所以遍历所有键值,找到匹配(\d+),\d+,[ABCD]这个形式的键值(为了把无关属性区分开来)。
然后检查第一个括号中的内容(mapid),如果包含在ary数组内,则将该开关设为关闭(false)。也就是说,这段代码把1,3,4这三个ID的地图上所有独立开关关闭。
  1. 数组ary = [字符串'1',字符串'3',字符串'4']
  2. for(遍历$gameSelfSwitches._data的属性key){
  3.   控制台.打印(key);
  4.   if(key.匹配(/(\d+),\d+,[ABCD]/)){  //详情请参见正则表达式
  5.     if(ary.包含(匹配组1的内容)){
  6.       $gameSelfSwitches._data[key] = false;
  7.     }
  8.   }
  9. }
复制代码

点评

大大厉害!  发表于 2020-4-28 12:09
SelfSwitches是独立开关  发表于 2020-4-27 22:50

评分

参与人数 1赞 +1 收起 理由
脚本盲 + 1 认可答案

查看全部评分

祝好。
回复 3 0

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部