如果有的话,使用对象作为数组索引的缺点是什么?
What, if any, are the disadvantages to using an object as an array index?
我没有读到这是可能的,但凭直觉,我测试了是否可以将对象用作关联数组中的索引。这样的:
var obj = Object(),
arr = Array();
arr[ obj ] = "things";
console.log( arr[obj] );
将"事物"记录到控制台。这对我来说似乎是一个惊人的灵活性,我想用它来保存有关节点的信息。
然而,它感觉有点"off",好像它太灵活了。在使用这个工具时,是否存在我应该注意的效率低下或注意事项?
当对象被用作属性名时,它将被字符串化——所有对象属性都是字符串!这意味着它也失去了它的身份,不再是唯一的标识符。
var obj = {};
var key = {};
obj[key] = "things"; // create a property with the name String(key)
obj["[object Object]"] // "things"
它不是你想的那样:
> obj.toString()
"[object Object]"
> arr["[object Object]"]
"things"
以这种方式添加的任何内容都将固定为相同的硬编码密钥名称。
你可以用ES6的Map
做你想做的事情。它不是无处不在,但有多边形。
相关文章:
- 按最大值获取数组索引
- 删除和重用数组索引
- 警报数组索引和值
- .fadeIn .fadeOut 会导致数组索引出现奇怪的行为
- Javascript原型通用Enquries和通过数组索引分配Id
- 获取数组索引的值
- Javascript-将值与关联数组索引进行比较
- Javascript-在数组索引中循环的问题
- JavaScript - “规范化”数组索引
- 数组索引混淆
- 使用 Javascript/React.js 查找对象的数组索引
- 如何拆分数组索引
- 获取新推送元素的数组索引
- 在 javascript 中将数组索引作为参数传递
- 当对象本身存储在 JavaScript 的数组索引中时,如何打印对象的每个单独属性
- 如何使用数组索引序列
- ASP.NET/JavaScript:数组索引溢出:实体框架/LINQ
- 如何在分配给数组索引的对象上调用方法
- 使用铆钉访问数组索引.js
- 计算 Javascript 数组索引的出现次数