为什么在for循环期间我的对象的这些属性未定义?

时间:2015-06-12 17:42:35

标签: javascript for-in-loop

我试图弄清楚为什么这段代码不会记录实际的属性值,而只是反复记录undefined,即使我认为我在每个对象中创建了属性'random'并给出了它是Math.random()的值。

var students = [{id:'1'}, {id:'2'}, {id:'3'}, {id:'4'}];


sortStudents(resetRandom(students));

function resetRandom(ary) {
    for (var i = ary.length - 1; i >= 0; i--) {
        ary[i]['random'] = Math.floor(Math.random()*10000);
    };
    return ary
}

如果我console.log()调用resetRandom(students)后的学生数组,则'random'属性被定义为数组中的每个对象中预期的数字。下面的函数是当我尝试记录该属性时出现问题的地方我只是未定义:

function sortStudents(ary) {

    for (var i = ary.length - 1; i >= 0; i--) {
        for(var key in ary[i]) {
            if (key === 'random') {
                console.log(ary[key]);
            }

        }
    };

}

1 个答案:

答案 0 :(得分:1)

更改

 if (key === 'random') {
                console.log(ary[key]);
            }

到:

 if (key === 'random') {
                console.log(ary[i][key]);
            }