1

我想使用一个变量作为我的关联数组的索引

var usersName = []; // Just defining
userName[socket.id] = socket.name; // socket.id is an alphanumeric string

我想使用那个socket.id(字符串)作为usersName数组的自定义索引,所以我可以获得连接到套接字的所有用户的列表。问题是我逃避变量的方式(我猜)。

我试过这个但没有用:

usersName ['\''+socket.id+'\''] = socket.name;

这在 PHP 中有效,但是我无法让它在 javascript 中工作

谢谢您的帮助。

4

2 回答 2

2

你想要做的基本上是这样的:

// say socket = {id: 123, name: 'Bob'};
var foo = {}; // create an object
foo[socket.id] = socket.name; // put socket.name under foo.

var i;
for (i in foo) { //loop through list
   console.log(i, "is", foo[i]); //123 is Bob
}

对?就像发布的评论一样,JS 没有“关联数组”,而是有更好的东西——伪经典对象。JavaScript 中的对象与 PHP 中的对象完全不同。在学习 JavaScript 时,您需要重新学习“对象”的含义。javascript 中的数组并不值得骄傲。它们本质上只是扩展了 Array 原型并具有特殊“长度”属性的对象。JS 中的数组还允许您通过执行 for(i =..; i..; i +=..) 循环来按顺序获取数据。除了 Array.prototype 的好处和以某种可靠顺序加载事物列表的能力之外,数组并没有那么特别。

于 2013-03-23T00:21:33.607 回答
1

希望这将按照您想要的方式工作。这是一种 PHP 风格:

1

var usersName = new Object();
usersName["123"] = 'Jane';
usersName["923"] = 'Charles';

for (var key in usersName) {
    console.log(key + ' => ' + usersName[key]);
}

2

var usersName = {
    '123' : 'Jane',
    '923' : 'Charles'
};

for (var key in usersName) {
    console.log(key + ' => ' + usersName[key]);
}
于 2013-03-23T00:19:36.803 回答