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

JavaScript中从对象数组提取用户名称至字符串新数组的实现问题

问题分析与修正

你的代码存在几个关键问题,导致无法正确提取用户名称:

  1. 属性检查写法错误:names.hasOwnProperty[name] 是错误用法,要检查当前遍历的对象是否包含name属性,应该针对names[i]调用hasOwnProperty方法,正确写法是names[i].hasOwnProperty('name')(注意方法要加括号,参数是字符串形式的属性名)。
  2. 属性访问错误:names[name]无法获取当前对象的name属性,你需要访问循环中的当前对象names[i]的name属性,即names[i].name。
  3. 冗余判断(可选):如果能确定输入数组的每个元素都包含name属性,这个判断可以省略,直接提取属性即可。

修正后的基础循环版本

function getNames(names) {
  let newArray = [];
  for(let i = 0; i < names.length; i++){
    // 可选:添加属性存在性检查,避免无name属性的对象导致错误
    if(names[i].hasOwnProperty('name')){
      newArray.push(names[i].name);
    } 
  }
  return newArray;
}

console.log(getNames([{name: "Pete", age: 35, language: "Javascript"},{name: "John", age: 40, language: "Javascript"}, {name:"Carol", age: 30, language: "Javascript"}]))

更简洁的ES6写法(推荐)

对于这种数组元素转换的场景,使用Array.prototype.map方法会更简洁高效,它专门用于将数组的每个元素映射为新值:

function getNames(names) {
  // 用可选链操作符做容错处理,避免无name属性的对象返回undefined
  return names.map(user => user?.name || '');
}

console.log(getNames([{name: "Pete", age: 35, language: "Javascript"},{name: "John", age: 40, language: "Javascript"}, {name:"Carol", age: 30, language: "Javascript"}]))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 00:46:09