[英]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.