PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Find in Array


Nokman
12.06.2014, 18:14
Guten Abend

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.



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
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;