我使用Pipedrive API遇到了问题。我尝试使用下面的方法获取一些数据,但它返回了一个错误:
$.each(data.data, function(key,value) {
console.log(value.0d1df598a5539ab5b6b410b339dc9218e0acb091);
});
然而这有效:
$.each(data.data, function(key,value) {
console.log(value.person_name);
});
为什么我无法获得由Pipedrive系统生成的复杂字符串的键的值?
答案 0 :(得分:4)
要检索您需要的内容,您需要使用括号表示法,因为属性标识符的第一个字符是整数。试试这个:
var value = {
'0d1df598a5539ab5b6b410b339dc9218e0acb091': 'foo bar'
}
console.log(value['0d1df598a5539ab5b6b410b339dc9218e0acb091']);
答案 1 :(得分:0)
可能的解释可以归纳为两部分
有效的javascript变量(标识符名称)
标识符必须以$
,_
或Unicode类别Uppercase letter (Lu)
,Lowercase letter
,Titlecase letter (Lt)
,Modifier letter (Lm)
,{{中的任何字符开头1}},或Other letter (Lo)
。
在您的情况下,标识符名称以整数(0)
属性访问者
可以使用Letter number (Nl)
(dot
)表示法或使用.
[]`表示法
方括号表示法允许使用不能与点表示法一起使用的字符,并且还可以根据第一点检索无效的标识符。除此之外,它还允许访问包含特殊字符的属性。
这是因为js解释器会自动将方括号内的表达式转换为字符串&检索相应的值。实际上
js在语句中使用方括号计算第一个完整表达式,在其上运行Bracket
将其转换为字符串,然后将该值用于下一个括号表达式,直到它用完括号表达式为止。
所以toString()
具有边缘优势,因为它不会经历上述过程。
但是它不能与变量(或数字)一起使用。
它只允许访问属性的显式键名
由于对象标识符名称中的标识符以0开头,因此括号表示dot notation
会给出它的值。