You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

筛选指定对象到新数组后打印属性返回undefined问题求助

问题根源与解决方案

首先,咱们来拆解你遇到的undefined问题:核心原因是你声明的student变量从未被赋值为匹配的Jody对象,导致你push到newStudents里的是undefined(var声明的变量默认初始值就是undefined)。之后访问newStudents[0].name,本质是在访问undefined.name,结果自然是undefined。

假设你的完整代码大概是这样的错误版本:

var student;
var newStudents = [];
var students = [
  { name: 'Odelia', track: 'Accounting', achievements: '26', points: '2260' },
  { name: 'Jody', track: 'Web Design', achievements: '18', points: '1620' }
];

// 错误的遍历逻辑:没给student赋值
for (var i = 0; i < students.length; i++) {
  if (students[i].name === 'Jody') {
    newStudents.push(student); // 这里push的是未赋值的student,即undefined
  }
}

console.log(newStudents[0].name); // 返回undefined

正确的写法(仅用var,符合你的要求)

我们只需要在遍历过程中,把匹配到的对象赋值给student,或者直接push目标对象即可:

方式1:使用student变量

var student;
var newStudents = [];
var students = [
  { name: 'Odelia', track: 'Accounting', achievements: '26', points: '2260' },
  { name: 'Jody', track: 'Web Design', achievements: '18', points: '1620' }
];

for (var i = 0; i < students.length; i++) {
  // 先把当前遍历的学生对象赋值给student
  student = students[i];
  if (student.name === 'Jody') {
    newStudents.push(student);
    break; // 找到目标后可以终止遍历,提升效率
  }
}

// 安全访问:先判断newStudents[0]是否存在,避免报错
console.log(newStudents[0] ? newStudents[0].name : "未找到匹配的学生");

方式2:直接push目标对象(更简洁)

如果不需要student变量,也可以直接把匹配的元素push进新数组:

var newStudents = [];
var students = [
  { name: 'Odelia', track: 'Accounting', achievements: '26', points: '2260' },
  { name: 'Jody', track: 'Web Design', achievements: '18', points: '1620' }
];

for (var i = 0; i < students.length; i++) {
  if (students[i].name === 'Jody') {
    newStudents.push(students[i]);
    break;
  }
}

console.log(newStudents[0].name); // 输出"Jody"

额外注意点

  • 确认数组中name字段的大小写是否和你判断的完全一致(比如不要写成"jody"小写,而数组里是"Jody");
  • 如果数组中可能有多个叫Jody的学生,去掉break即可收集所有匹配项;
  • 访问newStudents[0]前最好做存在性判断,避免数组为空时报错。

内容的提问来源于stack exchange,提问作者Yann Bohbot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:22:24