我需要一个包含用户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位置存储所有请求信息。
答案 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中的标准数组)。