Project1

标题: 变量如何存数组 [打印本页]

作者: if216    时间: 2018-4-1 09:29
标题: 变量如何存数组
看到有朋友问,还是回答一下,希望论坛有各路大神来拽脚本,每天打开论坛有新收获,哈。

首先,能不能用变量存数组,答案是能。

但以前不知道怎么存,那我是怎么存的?我用字符串存,比如说 1,2,3,4,5 五个数,要存入一个变量,我会把他弄成 1+‘,’+2 +‘,’+3+‘,’+4 +‘,’+5。这样就成了一个长字符串‘1,2,3,4,5’

变量里就存这个,存完了了取出来,再根据str.split(","),直接还原出一个数组。再任意使用。

我的插件LCK_AutoBackOldMap.js里有这种写法的运用,不知道可以看看。85行,111行。

**************************************************************************************************

那么能不能直接往变量存数组?答案也是可以的。

这样做:
        $gameVariables.setValue(44, []);
        $gameVariables.value(44).push(5);
        $gameVariables.value(44).push(6);
这样就存好了,相当于往44号变量存入了一个数组,又往数组存了两个元素,一个是5,一个是6.
好,现在我要得到这两个元素,怎么得到?
        $gameVariables.value(44)[0] → 5;
        $gameVariables.value(44)[1] → 6;
我们会发现,这样的数组只适合遍历,不适合快速定位。
所以如果需要快速找到元素,最好是用字典。
那么,这么写:
      $gameVariables.setValue(44, []);
        $gameVariables.value(44)[5] = 55;
        $gameVariables.value(44)[7] = 77;
      这样做好以后,取的时候,就写$gameVariables.value(44)[7],取出的就是77

********************************************************************************************************************
最后还有一种办法,是我使用比较多的,直接用脚本写,存在各个已有类里面,这里不讨论了。
如果以上都看不懂,说明基础语言知识还是不够,需要锻炼。但我上面讲的算详细,复制粘贴应该也能用了。

最近在研究chrono敌人的AI,还没找到方法改,有知道的大咖请告知,谢谢。
      


作者: ekmomo    时间: 2018-4-3 09:59
因为地图上的判断本身不会用到数组,且数据类型是固定的,所以不用setValue方法更好,$gameVariables._data[id]直接操作就行。

如$gameVariables._data[44] = [1,2,3,4,5];
$gameVariables._data[44].push(6,7,8);

要在事件中修改的话操作选带入,操作数选脚本,脚本后面直接填入一个数组就可以。

作者: jianghe006    时间: 2020-11-4 10:37
ekmomo 发表于 2018-4-3 09:59
因为地图上的判断本身不会用到数组,且数据类型是固定的,所以不用setValue方法更好,$gameVariables._data ...

要是想删除一个元素,用什么语句啊?

作者: alexncf125    时间: 2020-11-4 11:52
jianghe006 发表于 2020-11-4 10:37
要是想删除一个元素,用什么语句啊?


delete 或 splice



比较 delete 与 splice 应用在 array(数组) 上的差别

splice:
var array=[ 'a', 'b', 'c', 'd' ];
array.splice(2, 1); // 删除 'c'
console.log(array.length); // 3
console.log(array); // [ 'a', 'b', 'd' ]

delete:
var array=[ 'a', 'b', 'c', 'd' ];
delete array[2]; // 删除 'c'
console.log(array.length); // 4
console.log(array[2]); // 'undefined'
作者: jianghe006    时间: 2020-11-6 10:53
看到了,一会试试,多谢大佬





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1