繁体   English   中英

Javascript - 带有布尔键的数组?

[英]Javascript - Array with Boolean Keys?

我对Javascript比较陌生,可能只是一个我不熟悉的技巧,但是如何为Array键分配布尔值呢?

发生了什么:

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

您不能在数组中使用任意索引,但您可以使用对象文字来(完成)完成您所追求的内容:

var test = {};
test[false] = "asdf";
test['false'] = "fdsa";

但是应该注意,对象属性必须是字符串(或可以转换为字符串的类型)。 使用布尔基元最终会创建一个名为'false'的对象属性。

test[false] === test['false'] === test.false

这就是为什么你的第一个例子的Object.keys().length调用只返回1

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

Javascript中的数组不是关联的, 因此您无法为其中的键指定值。

var test = [];
test.push(true);  // [true]
test.push(false); // [true, false]

你对一个对象感兴趣!

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

Javascript数组仅基于数字索引。 你可以使用0和1作为键(虽然我不能想到你需要布尔键的情况)。 myArr[0] = "mapped from false"; myArr[1] = "mapped from true";

你也可以扭转上面的答案,比如

let test = [true];

console.log(typeof test);

// Output: Object True

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM