0

可能重复:
如何访问数字属性?

我正在尝试读取键是数字的对象。但不幸的是,当我尝试阅读这个对象时:

Salary:{
  "2012_08":"5555",
  "2012_09":"6666",
  "2012_10":"7777"
}
var augsalary =  salary.2012_08;

它抛出一个错误。我的问题是:“2012_08”是年月组合,不能更改为存储为字符串。我怎样才能使用该键访问该值?

4

2 回答 2

6

可以使用大括号表示法访问所有对象属性。

采用

var augsalary =  salary['2012_08'];

请注意,如果您希望它为整数(并且不能更改 JSON 以发送数字),您可以使用:

var augsalary =  parseInt(salary['2012_08'], 10);
于 2012-10-11T06:42:42.840 回答
3

首先,您的 Javascript 代码无效,也许您的意思是

var Salary = {
  "2012_08":"5555",
  "2012_09":"6666",
  "2012_10":"7777"
}
var augsalary =  salary.2012_08;

其次,一个非常常见的混淆是谈论 JSON 对象。Salary不是 JSON 对象,它是 JavaScript 对象。JSON 是一种表示法,用于将所有 JavaScript 对象的大部分子集表示为字符串。然后可以将这些字符串传输到代码的其他部分或其他计算机,在那里它们可以转换回对象进行处理。所以你的问题Salary是从接收到的 JSON 字符串转换的数据。

JS 有数组和对象。

对象是最基本的,它们可以具有名称可以是任意字符串的属性。提供了两种形式的对象属性访问:大括号和点符号。大括号表示法是通用的,您将属性名称值指定为对象名称后大括号内的字符串或变量值。点表示法是一种简写,只有在属性名称具有有效 JS 变量名称形式时才能使用。

数组是基本对象,具有维护其数字属性名称的有序列表的附加功能。您可以将非数字属性名称添加到数组,但它们不参与任何 Array 函数。

因此,在您的示例中,您没有数字键或属性名称,因为它们包含“_”字符。由于它们以数字开头,因此您不能使用点表示法,而必须使用大括号表示法来访问它们,如下面的dystroy所述。

希望我的小课能帮助你更好地理解基础知识。

于 2012-10-11T07:16:06.397 回答