HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-187/)
-   -   Find in Array (https://hx3.de/editing-scripting-187/find-array-23944/)

Nokman 12.06.2014 18:14

Find in Array
 
Guten Abend

Code:

test_array =
[
["blue",50],
["red",150],
["green",250],
["yellow",350]
];

Ist meine Array in der Versuche ich nun red zu finden und denn 2 Teil zu ersetzen. Leider Reagiert mir find "red" nicht darauf nur wenn ich nach ["red",150] suche sagt er mir 1. Doch da sich die Zahl ändert muss ich nach denn "red" suchen.

oder würde jemand ein anderen weg einfallen das ich es finden kann und die Zahl ersetzen?

Danke
Nokman

Vienna 12.06.2014 20:33

test_array = [["blue",50],["red",150],["green",250],["yellow",350]];
a="red";
b=250;
player groupChat str test_array;
{if (_x select 0==a) then {_x set [1,b]}} forEach test_array;
player groupChat str test_array;

Moerderhoschi 12.06.2014 21:30

Hier eine Variante die nicht das gesamte Array durchgeht sondern aufhoert sobald der Wert geaendert wurde.

Code:


test_array =
[
        ["blue",50],
        ["red",150],
        ["green",250],
        ["yellow",350]
];

_search = "red";
_value = 250;
_iEnd = ((count test_array) - 1);

player globalChat "vorher: " + str test_array;

for "_i" from 0 to _iEnd do // nur so oft wiederholen bis Suchergebnis gefunden
{
        if ( ((test_array select _i) select 0) == _search) then
        {
                (test_array select _i) set [1,_value];
                _i = _iEnd // _i auf maxWert um den Loop zu beenden
        };
};

player globalChat "nachher: " + str test_array;

gruß
hoschi

Nokman 12.06.2014 21:55

Vielen dank.

Aber Verstehe ich denn find befehl dann falsch das er es so nicht findet weil es ein String in einer Array ist? und deswegen es nicht auflösen kann?

Komischerweise kann er ja Strings in Arrays finden wenn die nicht Verschachtelt sind.

Vienna 12.06.2014 22:20

Wie du ja festgestellt hast, geht find nicht bei mehrdimensionalen Arrays.

Nokman 12.06.2014 22:30

Jup es war nur eben die Frage warum so ein Komando aber es geht nicht so :D

is Arma. Danke für die Hilfestellung

Vienna 13.06.2014 08:51

Zitat:

Zitat von Moerderhoschi (Beitrag 473898)
Hier eine Variante die nicht das gesamte Array durchgeht sondern aufhoert sobald der Wert geaendert wurde.
...

Das geht auch mit forEach so!

test_array = [["blue",50],["red",150],["green",250],["red",350]];
a="red";
b=250;
player groupChat str test_array;
{if(_x select 0==a)exitWith{_x set [1,b]}}forEach test_array;
player groupChat str test_array;


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:13 Uhr.

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias


SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119