4

我有一个地图对象,其中包含有关人员的数据列表。每个人的名字都是独一无二的。每个人的数据字段可能不包含相同类型的信息(即——Joey 包含一个日期字段,但 Jill 没有)。

我想知道是否可以通过使用变量名作为地图路径的一部分来访问地图的某个部分。考虑以下:

var data = {
  'Joey': {
    'id': '912',
    'date': 'May 14 2012',
  },
  'Jill': {
    'id': '231',
    'login': 'JillM',
  }
}

var name="Joey";
var joeyDate = data. + name + .date; //This does not work. Is there an alternative?
4

2 回答 2

8

使用此语法:

data[name]["date"]

这是 的替代方法data.Joey,它也应该可以工作,但是是静态的。

您还可以使用:

data[name].date

不同之处正是您要查询的内容 -[]表示法更适合动态检索,并且如果使用点表示法,Javascript 可能不允许使用无效键。例如,如果您有一个“出生日期”键,则不能使用data[name].date-born,但可以使用data[name]["date-born"].

使用它的一个例子是:

for (name in data) {
    console.log(data[name].date);
}

但当然,date必须是一个属性(不是“吉尔”),否则undefined将被返回。

于 2012-10-24T16:30:11.343 回答
1

另一种方法:mapName.get(keyName).propertyName

在你的情况下:data.get(name).date

于 2018-07-09T07:23:41.523 回答