如何遍历对象并保留指定字段?JSON数据过滤问题求助
问题:过滤数组仅保留指定字段
我有一段JSON格式的data数组,想过滤数据只保留每个元素中id对象内的user字段(目标user值为'11111'),但尝试的代码没生效,相关信息如下:
原始数据
var data= [ { id: { server: 'xxxxx', user: '123456', _serialized: '64566' }, name: 'Doe', isCalled: false, isReceived: false, unreadCount: 1, }, { id: { server: 'xxxxx', user: '123456', _serialized: '64566' }, name: 'Doe', isCalled: false, isReceived: false, unreadCount: 1, }, { id: { server: 'xxxxx', user: '123456', _serialized: '64566' }, name: 'Doe', isCalled: false, isReceived: false, unreadCount: 1, } ]
尝试的无效代码
const seun = sex.map(({ id, ...rest }) => rest);
期望结果
var data= [ { user: '123456' }, { user: '123456', }, { user: '123456', } ]
正确实现方式
你当前的代码有两个核心问题:
- 变量名错误:你用了
sex但实际数组变量是data; - 逻辑方向错了:你现在是去掉
id保留其他字段,和需求完全相反。
要实现需求,需要用map提取每个元素里id.user,同时如果要筛选出user值为11111的条目,还要配合filter:
仅提取所有user字段(不管值)
const seun = data.map(item => ({ user: item.id.user }));
提取并筛选user值为'11111'的条目
如果要严格匹配目标user值11111,可以先过滤再提取:
const seun = data .filter(item => item.id.user === '11111') .map(item => ({ user: item.id.user }));
执行以上代码就能得到你想要的结果。
内容的提问来源于stack exchange,提问作者owodunni david
相关产品推荐
相关产品推荐

