Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Передача имени массива через параметр функции (https://javascript.ru/forum/misc/74998-peredacha-imeni-massiva-cherez-parametr-funkcii.html)

Самовар 24.08.2018 12:57

Передача имени массива через параметр функции
 
есть функция вида
function gamePlayersStart(){
for (var i = 0; i < fieldSizeX * fieldSizeY - 3; i++){


playerUnits[i] = new Image();
playerUnits[i].gameCoordX = a;
playerUnits[i].gameCoordY = b;
//fieldHex[i][j].gameNumber = i + '' + j + '';
playerUnits[i].owner = "player";
playerUnits[i].width = hexSize/1.5;
playerUnits[i].height = hexSize/1.5;
playerUnits[i].style.position = "absolute";
playerUnits[i].style.left = +fieldHex[a][b].style.left.slice(0, -2) + hexSize/4 + 'px';
playerUnits[i].style.top = +fieldHex[a][b].style.top.slice(0, -2) + hexSize/4 + 'px';
playerUnits[i].onclick = test;        
playerUnits[i].src = "image/infantry.png";
document.body.appendChild(playerUnits[i]);
fieldHex[a][b].src = "image/hex_blue.png";
}

}


необходимо сделать её универсальной, чтобы имя массива playerUnits[i] можно было передать при вызове функции, примерно так gamePlayersStart(name). И масив получался вот такой name[i]= new Image(); и тд. Потому что писать для каджого игрока отдельную функцию это грех.

j0hnik 24.08.2018 12:59

function gamePlayersStart(playerUnits){

Самовар 24.08.2018 13:02

эта мысль пришла первой, но не работает. Не принимает массив вот такой параметр как своё имя

j0hnik 24.08.2018 13:06

Самовар,
var arr = [1,2,3];
var arr1 = [4,5,6];
function fn(arr){
	alert(arr);
}
fn(arr);
fn(arr1);


принимает!

Самовар 24.08.2018 13:18

это другое. У вас параметр функции массив. Мне нужно, чтобы параметр функции принимался как имя массива в функции.
gamePlayersStart(name) { ... name[i] = 111; ... } чтобы при вызове функций gamePlayersStart(name1), gamePlayersStart(name2), gamePlayersStart(name3) создались три разных массива name1, name2 и name3.

Самовар 24.08.2018 13:19

чтобы не создвать 3 функции для трех массивов, а 1 функция создавал 3 разных массива в зависимости от имени массива, переданного в параметре функции name

j0hnik 24.08.2018 13:27

function fn(){
i = 1;
window['playerUnits'+i] = [1,2,3];
}
fn();
alert(playerUnits1)


для глобальной области

laimas 24.08.2018 13:28

Самовар,
может тогда лучше один объект, в котором аргумент свойства его, а массивы значения этих свойств?


Часовой пояс GMT +3, время: 17:18.