如何从对象中获取值?

4

我写了一个对象,它有4个键和值。如何使用for循环分别获取键和值?

我尝试了下面的代码,但没有成功。

var timeObject = {
    getNewYorkLocalTime: 'getTime.php?lat=40.7143528&lan=-74.0059731',
    getLondonLocalTime: 'getTime.php?lat=51.5001524&lan=-0.1262362',
    getChennaiLocalTime: 'getTime.php?lat=13.060422&lan=80.249583',
    getBangaloreLocalTime: 'getTime.php?lat=12.9715987&lan=77.5945627'
}

for (var x in timeObject) {
    alert(timeObject[x].value);
}

有人能帮我吗?我在这个页面上使用了jQuery,所以jQuery的解决方案也可以。

4个回答

2
在 jQuery 中,你可以使用 $.each 进行循环遍历。
$.each(timeObject, function(key, value) {

});

然而,你的循环并没有差太远:
for (var x in timeObject) {
    alert('key: ' + x + ' value=' + timeObject[x]);
}

在这个for..in循环中,x是键名。然后你可以使用标准成员运算符在对象timeObject上访问它。请参见for..in的MDC文档

1

我认为你应该做类似这样的事情:

var timeObject = {
    getNewYorkLocalTime: 'getTime.php?lat=40.7143528&lan=-74.0059731',
    getLondonLocalTime: 'getTime.php?lat=51.5001524&lan=-0.1262362',
    getChennaiLocalTime: 'getTime.php?lat=13.060422&lan=80.249583',
    getBangaloreLocalTime: 'getTime.php?lat=12.9715987&lan=77.5945627'
}

for (var x in timeObject) {
    //use this check to avoid messing up with prototype properties
    if (timeObject.hasOwnProperty(x)) {
        alert(timeObject[x]);
    }
}

据我所知,原型属性在这里不适用,因为你正在处理一个对象而不是本地数组。 - JohnP
@JohnP 除非您定义了类似 Object.prototype.contains 的内容。 - lonesomeday
@JohnP 我认为如果你不需要原型链的话,最好过滤掉它。 - Nicola Peluchetti

0

你差不多做到了。你不需要在结尾处加上额外的value

可用代码

var timeObject = {
    getNewYorkLocalTime: 'getTime.php?lat=40.7143528&lan=-74.0059731',
    getLondonLocalTime: 'getTime.php?lat=51.5001524&lan=-0.1262362',
    getChennaiLocalTime: 'getTime.php?lat=13.060422&lan=80.249583',
    getBangaloreLocalTime: 'getTime.php?lat=12.9715987&lan=77.5945627'
}

for (var x in timeObject) {
    console.log(timeObject[x]);
}

0
如果仍然需要 - Object.keys() 可能会对您有所帮助。演示:http://jsfiddle.net/SK4Eu/

var timeObject = {
    getNewYorkLocalTime: 'getTime.php?lat=40.7143528&lan=-74.0059731',
    getLondonLocalTime: 'getTime.php?lat=51.5001524&lan=-0.1262362',
    getChennaiLocalTime: 'getTime.php?lat=13.060422&lan=80.249583',
    getBangaloreLocalTime: 'getTime.php?lat=12.9715987&lan=77.5945627'
}

var keys = Object.keys(timeObject),
    keysLength = keys.length;

for (var i = 0; i < keysLength; i++) {
    alert(timeObject[keys[i]]);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接