如何过滤对象数组,仅保留name与lastname属性?
过滤对象数组保留指定属性
你可以通过数组的map()方法,结合不同方式提取目标属性,得到仅包含指定键的新对象数组:
方法1:解构赋值(简洁写法)
const datos = [ {name: 'Maiki', age:30, country:'USA', lastname: 'thomas' }, {name: 'Ana', age:28, country:'BELGIUM', lastname: 'Poirier'} ]; const filteredDatos = datos.map(({ name, lastname }) => ({ name, lastname })); console.log(filteredDatos);
这段代码从每个对象中解构出name和lastname属性,直接返回包含这两个属性的新对象,快速得到目标数组。
方法2:手动构建新对象(直观易懂)
const datos = [ {name: 'Maiki', age:30, country:'USA', lastname: 'thomas' }, {name: 'Ana', age:28, country:'BELGIUM', lastname: 'Poirier'} ]; const filteredDatos = datos.map(item => { return { name: item.name, lastname: item.lastname }; }); console.log(filteredDatos);
逐个提取需要的属性并手动创建新对象,适合对解构语法不熟悉的场景,逻辑更直白。
方法3:通用提取函数(可复用)
如果需要频繁提取不同属性,可以封装一个通用函数,提升复用性:
function pickProperties(arr, props) { return arr.map(item => { const newObj = {}; props.forEach(prop => { if (item.hasOwnProperty(prop)) { newObj[prop] = item[prop]; } }); return newObj; }); } // 使用示例 const datos = [ {name: 'Maiki', age:30, country:'USA', lastname: 'thomas' }, {name: 'Ana', age:28, country:'BELGIUM', lastname: 'Poirier'} ]; const filteredDatos = pickProperties(datos, ['name', 'lastname']); console.log(filteredDatos);
传入目标数组和需要保留的属性数组,即可灵活生成对应结果。
注意:原代码中的字符串值(如
Maiki、USA)需要添加引号,否则会被识别为未定义变量,引发语法错误。
内容的提问来源于stack exchange,提问作者Maiki
相关产品推荐
相关产品推荐

