Javascript - 带有布尔键的数组?
Posted
技术标签:
【中文标题】Javascript - 带有布尔键的数组?【英文标题】:Javascript - Array with Boolean Keys? 【发布时间】:2013-01-07 18:35:36 【问题描述】:我对 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
【问题讨论】:
【参考方案1】:你也可以颠倒上面的答案,比如
let test = [true];
console.log(typeof test);
// Output: Object True
【讨论】:
【参考方案2】:您不能在数组中使用任意索引,但您可以使用对象字面量来(某种程度上)完成您所追求的:
var test = ;
test[false] = "asdf";
test['false'] = "fdsa";
但是应该注意,对象属性必须是字符串(或可以转换为字符串的类型)。使用布尔原语最终会创建一个名为 'false'
的对象属性。
test[false] === test['false'] === test.false
这就是为什么您的第一个示例的 Object.keys().length
调用只返回 1
。
关于 JavaScript 对象的优秀入门指南,我推荐 MDN 的 Working with objects。
【讨论】:
很高兴知道这一点。也许我只是太宠坏了去年主要从事 php 工作。我不认为我可以同时拥有一个带有数字键和“关联”键的数组对象,可以吗?基本上,我需要一个包含单级数组的数组,如果用户属于某个组,则在上数组中创建一个键来保存该组中用户信息的下数组,如果他们是不是组的一部分,他们需要默认为“空白”组。问题是该组可以命名为任何名称,所以我希望这个“空白”键不是字符串。 您可以将对象属性命名为整数 (var obj = ; obj[1] = 'foo'
)。通常你会使用一个对象,然后创建一个 that 对象的属性,它是一个数组:var obj = ; obj.ArrayProp = [];
。希望对您有所帮助...
谢谢。像你这样的人是我喜欢这个网站的原因。【参考方案3】:
Javascript 中的数组不具有关联性,因此您无法为其中的键赋值。
var test = [];
test.push(true); // [true]
test.push(false); // [true, false]
您对某个对象感兴趣!
var test = ;
test[true] = "Success!";
test[false] = "Sadness"; // 'false': "Sadness", 'true': "Success"
【讨论】:
【参考方案4】:Javascript 数组仅基于数字索引。您可以使用 0 和 1 作为键(尽管我想不出需要布尔键的情况)。 myArr[0] = "mapped from false"; myArr[1] = "mapped from true";
【讨论】:
以上是关于Javascript - 带有布尔键的数组?的主要内容,如果未能解决你的问题,请参考以下文章