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