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

基于键从对象数组中移除对象的ES6实现方案咨询

解决对象数组中按指定键移除元素的问题

我来帮你修正代码,实现按指定键移除数组中对应对象的需求~

首先先分析你之前代码的问题:你尝试用r.o !== o来判断,但这里的o是一个键名变量,你不能用点语法(.)来访问对象的动态属性,得用方括号语法;另外,你的逻辑也没准确判断对象是否包含要移除的键。

针对你的场景(每个对象只有一个键),这里有两种简洁的ES6实现方式:

方法1:通用型(适用于对象可能有多个键的情况)

如果要移除包含指定键的对象,用hasOwnProperty配合filter过滤:

const arrayOfObj = [{All: true}, {Sports: true}, {Entertainment: true}];
const keyToRemove = 'All';

// 过滤掉包含keyToRemove的对象
const filteredArray = arrayOfObj.filter(item => !item.hasOwnProperty(keyToRemove));
console.log(filteredArray); // 输出: [{Sports: true}, {Entertainment: true}]

方法2:针对单键对象的优化

因为你的数组里每个对象只有一个键,也可以直接取出对象的唯一键来对比:

const arrayOfObj = [{All: true}, {Sports: true}, {Entertainment: true}];
const keyToRemove = 'All';

const filteredArray = arrayOfObj.filter(item => {
  // 取出对象的第一个(也是唯一的)键
  const itemKey = Object.keys(item)[0];
  return itemKey !== keyToRemove;
});
console.log(filteredArray); // 输出预期结果

为什么你的原代码不生效?

你原代码里的r.o是错误的写法,因为o是变量名,要访问对象的动态属性必须用r[o];另外你没判断这个键是否存在于当前对象中,逻辑上也不严谨。上面两种方法都能准确实现你的需求,根据实际场景选就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:21:35