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

如何从数组中删除所有元素,仅保留指定值的目标元素

嘿,我来帮你解决这个问题~首先得纠正下你示例里的小问题:你写的array其实是个对象(因为用了键值对),而且里面的data对象有重复的id键——在JavaScript这类语言里,重复的对象键会被最后一个覆盖,所以实际data最终只会剩下id: '3',这显然不是你想要的。我猜你可能是把data的结构写错了,下面我分两种最可能的情况给你解决方案:

情况1:data是数组(更符合常规业务场景的结构)

如果你的原始数据是下面这样(data是包含多个对象的数组):

const key = '2';
const originalObj = {
  data1: 'foo',
  data: [
    { id: '1' },
    { id: '2' },
    { id: '3' }
  ]
};

想要保留id等于指定值的那条数据,你可以用数组的filter方法过滤,或者用find直接拿到单个匹配项:

方案A:保留为数组形式

const result = {
  ...originalObj, // 保留原对象的其他属性(比如data1)
  data: originalObj.data.filter(item => item.id === key)
};
// 结果:{ data1: 'foo', data: [ { id: '2' } ] }

方案B:转为单个对象(和你期望的结果一致)

const result = {
  ...originalObj,
  data: originalObj.data.find(item => item.id === key) || {} // 找不到时返回空对象避免报错
};
// 结果:{ data1: 'foo', data: { id: '2' } }

情况2:data是无重复键的对象

如果你的data是一个以id为键的对象(比如下面这样):

const key = '2';
const originalObj = {
  data1: 'foo',
  data: {
    '1': '对应id1的数据',
    '2': '对应id2的数据',
    '3': '对应id3的数据'
  }
};

想要只保留指定key对应的键值对,直接构造新对象即可:

const result = {
  ...originalObj,
  data: { [key]: originalObj.data[key] } // 仅保留指定key的条目
};
// 结果:{ data1: 'foo', data: { '2': '对应id2的数据' } }

你可以根据自己实际的数据结构选择对应的方案,如果还有其他细节问题,随时说~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:02:10