Javascript使用id作为数组键创建2d数组

时间:2015-11-30 15:06:41

标签: javascript arrays multidimensional-array key

我需要一个包含用户ID作为数组键的数组结构,并且可以存储有关该用户的更多信息(二维数组)。在我的情况下,如果允许他执行数据库请求,则这些请求由请求ID和true / false表示。

每个用户都可以有多个请求

例如:

用户ID = 14并请求ids = 22和true以及45和false

用户ID = 12并请求ids = 44和false以及77和false

它应该是这样的:

var users_rights={14:{22:true,45:false},12:{44:false,77:false}}

我正在努力使用js语法,因为

var id[14] ;

创建一个包含14个元素的数组,其余的数组为空但我想要一个数组,在14位置存储所有请求信息。

3 个答案:

答案 0 :(得分:1)

您可以将[]语法与常规JS对象(如您描述的对象)一起使用。简单的例子:

var ob = {10: {11:true}, 12: {13: false}};
console.log(ob[10]);     //Displays the object {11:true}
console.log(ob[10][11]); //Displays true

答案 1 :(得分:0)

如果先创建数组,则分配您将仅编辑第n个元素的值,例如

var id = [];
id[14] = 'xyz'

给出一个包含14个undefined's和'xyz'作为第15个元素的数组。

答案 2 :(得分:0)

听起来好像你根本不想要一个数组,你想要一个对象具有其属性的对象值(或者如果你使用的是ES2015,Map的{​​{1}} s)

你的

Map

(这是完全有效的语法,除了你最后应该有var users_rights={14:{22:true,45:false},12:{44:false,77:false}} )给你前者:你用用户ID(;)索引它然后索引到您得到的对象包含请求ID(14和/或22),它会为您提供一个布尔值。

您可以创建如下对象:

45

您为其添加了一个属性var users_rights = {}; ,如下所示:

14

您以相同的方式向添加属性

users_rights[14] = {};

这些对象只是普通对象,而不是数组。括号表示法很适合它们(实际上,括号表示法使用的对象可以使它与数组一起使用,因为JavaScript aren't really arrays at all中的标准数组)。