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

标签 javascript for-in-loop

我试图弄清楚为什么这段代码不会记录实际的属性值,而只是一遍又一遍地记录未定义的值,即使我认为我在每个属性中创建了属性'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
}

如果我在调用resetRandom(students)console.log()学生数组,则'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]);
            }

        }
    };

}

最佳答案

改变

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

至:

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

关于javascript - 为什么我的对象的这些属性在 for in 循环期间未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30809189/

相关文章:

ios - 如何确保我的 for in 循环使我只能执行一个 segue?

javascript - this.offset 不是点击函数中的函数

javascript - 如何将复选标记作为字符放置?

javascript - Laravel,如何将此 Blade {{ url (' ' ) }} 转换为普通 html?

Swift:For Loop 按大于 1 的索引遍历枚举数组

JavaScript:for..in 循环内的 else 语句破坏了我的 if 语句

Javascript 数组拼接无法正常工作

javascript - 将整个 html 文档显示到框架中

javascript - onload 仅加载一次js函数

javascript原型(prototype)循环for in array