Javascript 创建以 id 作为数组键的二维数组

Javascript create 2d Array with ids as array key

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

表示

每个用户可以有多个请求

例如:

用户 ID =14 并且请求 ID =22 and true and 45 and false

用户 ID =12 并且请求 ID =44 and false and 77 and false

它应该是这样的:

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

自从

以来我就在 js 语法上苦苦挣扎
var id[14] ;

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

如果您先创建数组,然后分配值,您将只编辑第 n 个元素,例如

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

给出一个有 14 个未定义元素的数组,'xyz' 作为第 15 个元素。

这听起来好像您根本不需要数组,您想要一个具有其属性的对象值的对象(或者如果您使用的是 ES2015,MapMap s).

你的

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

(这是完全有效的语法,除了最后应该有一个 ; 之外)给你前者:你用用户 ID (14) 索引它,然后索引使用请求 ID (22 and/or 45) 进入您得到的对象中,这会为您提供一个布尔值。

你这样创建一个对象:

var users_rights = {};

你为密钥 14 添加一个 属性 像这样:

users_rights[14] = {};

您以相同的方式将属性添加到 that

users_rights[14][22] = true;
users_rights[14][45] = false;

这些对象只是普通对象,不是数组。括号表示法与它们一起工作得很好(事实上,括号表示法与对象一起工作的事实使其与数组一起工作,因为 JavaScript aren't really arrays at all 中的标准数组)。

您可以将 [] 语法与您描述的常规 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