【问题标题】:JavaScript drops Array Brackets in Object Key value pairJavaScript 在对象键值对中删除数组括号
【发布时间】:2016-12-31 22:59:44
【问题描述】:

大家好,我今天注意到一些奇怪的事情,试图在 JavaScript 中设置一个键值对。我知道对象的键始终是“字符串化”的,因此键值对始终是字符串:值,但是今天当我用数组尝试这个时发生了一些奇怪的事情。下面的例子:

var ob = {}; 

var a = [2,4]; 

ob[a] = 10; 

console.log("this is ob ", ob);

这里我尝试添加键 [2,4] 以映射到 10。但是,控制台日志返回字符串 2,4 映射到 10,而不是字符串 [2,4] 映射到 10。有谁知道为什么会这样?

【问题讨论】:

  • 为什么要使用数组作为键?
  • 定义“奇怪的东西”。你实际上并不是在问问题。
  • String 2,4 是 Array.prototype.toString 为数组 [2,4] 返回的内容
  • Object.keys(ob) // ["2,4"]

标签: javascript arrays object


【解决方案1】:

使用对象或数组作为属性名,不会调用JSON#stringify,而是调用对象的toString方法,该方法在数组中返回以逗号连接的数组元素。

在示例中,我重写了Array#toString 方法,您可以看到生成的属性名称反映了这一点:

var ob = {}; 

var a = [2,4]; 

a.toString = function() { return 'cats' }; // override toString

ob[a] = 10;

console.log("this is ob ", ob);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 2015-12-07
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多