带布尔键的Javascript数组?

带布尔键的Javascript数组?,javascript,arrays,key,boolean,Javascript,Arrays,Key,Boolean,我对Javascript比较陌生,可能有一个技巧我不熟悉,但我如何才能将布尔值分配给数组键呢 发生了什么: var test = new Array(); test[false] = "asdf"; test['false'] = "fdsa"; Object.keys(test); // Yield [ "false" ] Object.keys(test).length; // Yield 1 我想发生的事: var test = new Array(); //Some stuff

我对Javascript比较陌生,可能有一个技巧我不熟悉,但我如何才能将布尔值分配给数组键呢

发生了什么:

var test = new Array();
test[false] = "asdf";
test['false'] = "fdsa";

Object.keys(test); // Yield [ "false" ]
Object.keys(test).length; // Yield 1
我想发生的事:

var test = new Array();

//Some stuff

Object.keys(test); // Yield [ "false" , false ]
Object.keys(test).length; // Yield 2

Javascript数组仅基于数字索引。您可以使用0和1作为键(尽管我想不出需要布尔键的情况)<代码>myArr[0]=“映射自false”;myArr[1]=“映射自true”

Javascript中的数组是不关联的,因此不能为其中的键赋值。

var test = [];
test.push(true);  // [true]
test.push(false); // [true, false]
您对某个对象感兴趣

var test    = {};
test[true]  = "Success!";
test[false] = "Sadness";  // {'false': "Sadness", 'true': "Success"}

不能在数组中使用任意索引,但可以使用对象文字(某种程度上)完成所需的操作:

var test = {};
test[false] = "asdf";
test['false'] = "fdsa";
但是,应该注意,对象属性必须是字符串(或可以转换为字符串的类型)。使用布尔基元只会创建一个名为
'false'
的对象属性

test[false] === test['false'] === test.false
这就是为什么第一个示例的
Object.keys().length
调用只返回
1


对于JavaScript中对象的优秀入门指南,我建议使用MDN。

您也可以颠倒上面的答案,例如

let test = [true];

console.log(typeof test);

// Output: Object True

很高兴知道这一点。也许我只是被宠坏了,不适合在过去的一年里主要使用PHP。我不认为我可以同时拥有一个带有数字键和“关联”键的数组对象,对吗?基本上,我需要一个包含单级数组的数组,如果用户属于某个组,则会在上面的数组中创建一个键来保存该组中用户信息的下面数组,如果他们不是组的一部分,则需要默认为“空白”组。问题是该组可以命名为任何名称,因此我希望此“空白”键不是字符串。您可以将对象属性命名为整数(
var obj={};obj[1]='foo'}
)。通常,您会使用一个对象,然后创建该对象的一个数组属性:
var obj={};obj.ArrayProp=[]。希望有帮助…谢谢你。像你这样的人是我喜欢这个网站的原因。