使用Javascript中的变量名创建全局数组(非关联数组)
我已经阅读了一些与我所问问题相关的问题和答案,但我不认为它们完全回答了我的问题 我想创建一个新的全局数组,如果它不存在变量名 我现在的代码是使用Javascript中的变量名创建全局数组(非关联数组),javascript,jquery,arrays,variables,global-variables,Javascript,Jquery,Arrays,Variables,Global Variables,我已经阅读了一些与我所问问题相关的问题和答案,但我不认为它们完全回答了我的问题 我想创建一个新的全局数组,如果它不存在变量名 我现在的代码是 function NewRoom(RoomID, UserID, Usrname) { //Check if RoomID array is already declared or not and create new one if not //and add UserID and Usrname in it and then return
function NewRoom(RoomID, UserID, Usrname)
{
//Check if RoomID array is already declared or not and create new one if not
//and add UserID and Usrname in it and then return it
//My Current Code from a SO answer
RoomID = ( typeof RoomID != 'undefined' && RoomID instanceof Array ) ? RoomID : [];
RoomID[UserID] = Usrname;
return RoomID;
}
var users = ['abc','def','ghi'];
for(var i=0; i<3; i++)
{
NewRoom('Room2', i, users[i]);
}
var users2 = ['jkl','mno','pqr'];
for(var i=0; i<3; i++)
{
NewRoom('Room3', i, users2[i]);
}
console.log(users);
console.log(users2);
My Console always show last inserted results like for above users and users2 it is
Object { 2="ghi"};
Object { 2="pqr"};
函数NewRoom(RoomID、UserID、Usrname)
{
//检查是否已声明RoomID数组,如果未声明,则创建新的RoomID数组
//并在其中添加UserID和Usrname,然后返回它
//我的当前代码来自SO答案
RoomID=(RoomID的类型!=“未定义”&&RoomID数组实例)?RoomID:[];
RoomID[UserID]=Usrname;
返回室友;
}
变量用户=['abc'、'def'、'ghi'];
对于(var i=0;i您不想创建全局变量。您可以将房间添加为对象的索引,并从对象读取以获取房间中的所有用户
如果要使用房间创建“全局”阵列,请使用以下命令:
(function () {
var rooms = {};
function setRoom(RoomID, UserID, Usrname) {
if (typeof rooms[RoomID] === 'undefined') {
rooms[RoomID] = {};
}
rooms[RoomID][UserID] = Usrname;
}
var users = ['abc','def','ghi'];
for(var i=0; i<3; i++) {
setRoom('Room2', i, users[i]);
}
var users2 = ['jkl','mno','pqr'];
for(var i=0; i<3; i++) {
setRoom('Room3', i, users2[i]);
}
console.log(rooms['Room2']);
console.log(rooms['Room3']);
console.log(rooms);
}) ();
function NewRoom(RoomID, UserID, Usrname)
{
if($.isArray(RoomID ))
{
RoomID[UserID] = Usrname;
return RoomID;
}
else
{
RoomID=[];
RoomID[UserID] = Usrname;
return RoomID;
}
(函数(){
var房间={};
功能设置室(RoomID、UserID、Usrname){
if(房间类型[RoomID]=“未定义”){
房间[房间ID]={};
}
rooms[RoomID][UserID]=Usrname;
}
变量用户=['abc'、'def'、'ghi'];
对于(var i=0;i这样的东西怎么样:
function NewArray (RoomId, UserId, UsrName){
RoomId = RoomId || [];
RoomId [UserId] = UsrName;
return RoomId;
}
您的数组检查可能错误。请改用以下方法:
RoomID = Object.prototype.toString.call(RoomID) === '[object Array]' ? RoomID : [];
您可以执行以下操作:
(function () {
var rooms = {};
function setRoom(RoomID, UserID, Usrname) {
if (typeof rooms[RoomID] === 'undefined') {
rooms[RoomID] = {};
}
rooms[RoomID][UserID] = Usrname;
}
var users = ['abc','def','ghi'];
for(var i=0; i<3; i++) {
setRoom('Room2', i, users[i]);
}
var users2 = ['jkl','mno','pqr'];
for(var i=0; i<3; i++) {
setRoom('Room3', i, users2[i]);
}
console.log(rooms['Room2']);
console.log(rooms['Room3']);
console.log(rooms);
}) ();
function NewRoom(RoomID, UserID, Usrname)
{
if($.isArray(RoomID ))
{
RoomID[UserID] = Usrname;
return RoomID;
}
else
{
RoomID=[];
RoomID[UserID] = Usrname;
return RoomID;
}
你能提供你做的测试吗?我已经把我的代码放在你需要的上面了。上面的结果是,如果在循环中调用这个函数NewRoom,它总是会创建新的数组。@JohnSmith每次你描述“不工作”的问题时,如果没有进一步的解释,就会缺少一些东西。或者你收到一个错误(并且你应该超过你获得的所有输出),或者你有一个意外的输出(并且你应该发布你得到的输出和你期望的结果)在调用函数的循环之后,它总是在RoomID数组中给出最后一个存储的结果。让我更新我的代码。如果像你说的那样将其声明为var RoomID,那么它将是一个永久的RoomID,而不是通过添加数据来更新它。我想用我提供的任何RoomID创建一个新数组。好的,你想添加新的房间吗。查看我的编辑。@Hiddle-look我已经更新了我的问题,以便更好地理解anks-Hidde。我现在可以使用它了。Hidde如果我不想创建关联数组,你能提供技巧吗?实际上我不想使用关联数组,正如我说的,我问你为什么不想创建关联数组?没有用:(它再次使用我提供的RoomID创建新数组。因此,请看@JohnSmith comment。您试图实现什么?我的示例是,如果您传递数组,则不会创建新数组。