Вы можете сохранить свой собственный массив геймпадов и создать свой собственный идентификатор для каждого подключенного. Я не уверен, как работает Gamepad API, и было бы странно, если бы поменялись индексы, но это решение может обойти это.
let gamepads = [];
// On Connect add it to list of gamepads
window.addEventListener("gamepadconnected", function(e) {
let gamepad = navigator.getGamepads()[e.gamepad.index];
// You should find some better way to create a unique ID (Can use UUID's)
let uniqueId = Math.floor(Math.random() * 10000);
gamepads.push({gamepad: gamepad, uniqueId: uniqueId});
});
// On disconnect
window.addEventListener("gamepaddisconnected", function(e) {
let disconnectedGamepad = gamepads.find((gamepad) => {
return gamepad.index === e.gamepad.index;
});
gamepads = gamepads.splice(disconnectedGamepad.index, 1);
});