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

如何筛选对象属性?获取对象数组中值为最大值的名称数组

嘿,这两个问题我经常碰到,给你详细拆解一下!

一、如何对对象的属性进行筛选?

对象属性筛选一般分两种场景:保留指定属性或者排除指定属性,我给你每种场景都写几个实用的方法:

1. 保留指定属性

比如你有一个原始对象,只想留下name和email属性:

const originalObj = { name: 'Alice', age: 25, email: 'alice@example.com', address: 'NY' };
const keepProps = ['name', 'email'];

// 方法1:用reduce逐个收集属性
const filteredObj = keepProps.reduce((acc, prop) => {
  // 先判断原始对象有没有这个属性,避免添undefined
  if (originalObj.hasOwnProperty(prop)) {
    acc[prop] = originalObj[prop];
  }
  return acc;
}, {});

// 方法2:用Object.fromEntries更简洁
const filteredObj2 = Object.fromEntries(
  keepProps.map(prop => [prop, originalObj[prop]]).filter(([prop]) => originalObj.hasOwnProperty(prop))
);

2. 排除指定属性

如果是想去掉某些属性(比如age和address),可以这么做:

const excludeProps = ['age', 'address'];

// 方法1:ES6解构赋值,超级直观
const { age, address, ...filteredObj3 } = originalObj;

// 方法2:用reduce过滤掉不需要的属性
const filteredObj4 = Object.keys(originalObj).reduce((acc, prop) => {
  if (!excludeProps.includes(prop)) {
    acc[prop] = originalObj[prop];
  }
  return acc;
}, {});
二、从对象数组中提取value为最大值的name数组

这个需求我也常写,分两步走就很清晰:先找到数组里的最大value,再过滤出所有value等于最大值的项,最后提取它们的name就行。

举个例子:

const data = [
  { name: 'Apple', value: 10 },
  { name: 'Banana', value: 20 },
  { name: 'Orange', value: 20 },
  { name: 'Grape', value: 15 }
];

// 处理边界情况:如果数组为空直接返回空数组
if (data.length === 0) {
  console.log([]);
} else {
  // 步骤1:拿到所有value中的最大值
  const maxValue = Math.max(...data.map(item => item.value));
  // 步骤2:筛选出value等于最大值的项,提取name
  const result = data.filter(item => item.value === maxValue).map(item => item.name);
  
  console.log(result); // 输出: ['Banana', 'Orange']
}

如果你的数组里可能有value不是数字的情况,还可以加个判断确保value是有效数字,避免Math.max返回NaN:

const validValues = data.map(item => item.value).filter(val => typeof val === 'number' && !isNaN(val));
if (validValues.length === 0) {
  console.log([]);
} else {
  const maxValue = Math.max(...validValues);
  const result = data.filter(item => item.value === maxValue).map(item => item.name);
  console.log(result);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:34:05