获取以数字开头的键的值

时间:2016-05-23 14:29:25

标签: javascript jquery arrays json

我使用Pipedrive API遇到了问题。我尝试使用下面的方法获取一些数据,但它返回了一个错误:

$.each(data.data, function(key,value) {
    console.log(value.0d1df598a5539ab5b6b410b339dc9218e0acb091);
}); 

然而这有效:

$.each(data.data, function(key,value) {
    console.log(value.person_name);
}); 

为什么我无法获得由Pipedrive系统生成的复杂字符串的键的值?

2 个答案:

答案 0 :(得分:4)

要检索您需要的内容,您需要使用括号表示法,因为属性标识符的第一个字符是整数。试试这个:

var value = {
    '0d1df598a5539ab5b6b410b339dc9218e0acb091': 'foo bar'
}

console.log(value['0d1df598a5539ab5b6b410b339dc9218e0acb091']);

答案 1 :(得分:0)

可能的解释可以归纳为两部分

  1. 有效的javascript变量(标识符名称) 标识符必须以$_或Unicode类别Uppercase letter (Lu)Lowercase letterTitlecase letter (Lt)Modifier letter (Lm),{{中的任何字符开头1}},或Other letter (Lo)

    在您的情况下,标识符名称以整数(0)

  2. 开头
  3. 属性访问者

    可以使用Letter number (Nl)dot)表示法或使用. []`表示法

  4. 检索js中对象的键。

    方括号表示法允许使用不能与点表示法一起使用的字符,并且还可以根据第一点检索无效的标识符。除此之外,它还允许访问包含特殊字符的属性。

    这是因为js解释器会自动将方括号内的表达式转换为字符串&检索相应的值。实际上 js在语句中使用方括号计算第一个完整表达式,在其上运行Bracket将其转换为字符串,然后将该值用于下一个括号表达式,直到它用完括号表达式为止。

    所以toString()具有边缘优势,因为它不会经历上述过程。

    但是它不能与变量(或数字)一起使用。

    它只允许访问属性的显式键名

    由于对象标识符名称中的标识符以0开头,因此括号表示dot notation会给出它的值。