软件技术NINI 2024-09-03 15:06 采纳率: 98.4%
浏览 2
已结题

编写一个函数,该函数接受两个参数:一个对象数组和一个属性名(作为字符串)。函数应该遍历数组中的每个对象,查找并返回所有对象在该属性名下的值组成的数组。如果某个对象不包含该属性,则忽略该对象。

** 查找并返回数组中对象的特定属性值**
题目:编写一个函数,该函数接受两个参数:一个对象数组和一个属性名(作为字符串)。函数应该遍历数组中的每个对象,查找并返回所有对象在该属性名下的值组成的数组。如果某个对象不包含该属性,则忽略该对象。

提示:你可以使用map()方法来遍历数组,并使用箭头函数来简化代码。同时,可以使用逻辑与操作符(&&)来安全地访问对象属性,避免undefined错误。

function getPropertyValues(objects, propertyName) {  
  // 使用 map 方法遍历数组,并使用箭头函数提取属性值  
  // 如果对象包含该属性,则返回属性值,否则返回 undefined(但随后会被 filter 过滤掉)  
  // 然后使用 filter 方法过滤掉所有 undefined 值  
  return objects  
    .map(obj => obj.hasOwnProperty(propertyName) ? obj[propertyName] : undefined)  
    .filter(value => value !== undefined);  
  
  // 或者,更简洁但可能稍难理解的方式,直接在 map 中使用逻辑与操作来避免返回 undefined  
  // 但这样就需要在 map 调用后使用 filter 去除 null 或 undefined(如果可能的话)  
  /*  
  return objects  
    .map(obj => obj.hasOwnProperty(propertyName) && obj[propertyName])  
    .filter(value => value !== null && value !== undefined); // 注意:这里通常不需要检查 null,除非属性值可能为 null  
    // 但由于我们使用了逻辑与操作,且 obj[propertyName] 不会是 null(除非属性本身就是 null),所以只需要检查 undefined  
    // 简化后:  
    .filter(Boolean); // Boolean 函数会将 falsy 值(如 null, undefined, 0, '', false, NaN)过滤掉  
  */  
}  
  
// 示例  
const people = [  
  { name: 'Alice', age: 30 },  
  { name: 'Bob', hobby: 'swimming' },  
  { name: 'Charlie', age: 35, hobby: 'reading' },  
  { occupation: 'engineer' }  
];  
  
console.log(getPropertyValues(people, 'age')); // 输出: [30, 35]  
console.log(getPropertyValues(people, 'hobby')); // 输出: ['swimming', 'reading']  
console.log(getPropertyValues(people, 'name')); // 输出: ['Alice', 'Bob', 'Charlie']  
console.log(getPropertyValues(people, 'occupation')); // 输出: ['engineer']

  • 写回答

1条回答 默认 最新

  • AitTech 2024-09-03 15:22
    关注

    问题和答案一同出现

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月14日
  • 已采纳回答 9月7日
  • 创建了问题 9月3日

悬赏问题

  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?
  • ¥100 需要跳转番茄畅听app的adb命令