如何从JavaScript对象数组中筛选指定键值对?
问题:保留数组对象的指定键值对
原数据结构:
var data = [ { "id": "K014-s1", "status": true, "amount": 992, "check": true }, { "id": "K014-s2", "status": false, "amount": 10992, "check": true } ]
预期输出:
var data = [ { "id": "K014-s1", "amount": 992 }, { "id": "K014-s2", "amount": 10992 } ]
你之前的代码仅将每个对象的id推入数组,最终得到的是["K014-s1", "K014-s2"],无法生成包含指定键的对象数组。以下是几种可行解决方案:
方法1:使用map直接创建新对象
map方法会返回新数组,在回调中返回仅包含目标键的新对象即可:
var filteredData = data.map(obj => ({ id: obj.id, amount: obj.amount })); console.log(filteredData);
注意箭头函数返回对象时,需用括号包裹对象,避免被解析为函数体。
方法2:解构赋值简化写法
通过解构直接提取目标键,再返回新对象,代码更简洁:
var filteredData = data.map(({ id, amount }) => ({ id, amount })); console.log(filteredData);
方法3:通用处理函数(支持动态指定保留键)
如果需要灵活修改保留的键,可封装通用函数批量处理:
function pickTargetKeys(arr, targetKeys) { return arr.map(obj => { const newObj = {}; targetKeys.forEach(key => { if (obj.hasOwnProperty(key)) { newObj[key] = obj[key]; } }); return newObj; }); } // 使用示例 var filteredData = pickTargetKeys(data, ['id', 'amount']); console.log(filteredData);
内容的提问来源于stack exchange,提问作者bomemo
相关产品推荐
相关产品推荐

