JavaScript对象数组过滤:移除无Common_Text_Area__c属性的元素
过滤仅包含指定属性的对象数组
嘿,这个需求其实挺常见的,用JavaScript里的filter()方法就能轻松解决,而且代码简洁又高效!
核心思路
Array.prototype.filter()会遍历你的数组,对每个元素执行你指定的判断逻辑,只保留返回true的元素,最终返回一个新数组(不会修改原数组哦)。我们只需要在判断逻辑里检查每个对象是否拥有Common_Text_Area__c这个属性就行。
基础实现代码
先给你一个完整的示例,一看就懂:
// 假设这是你的原始对象数组 const originalObjects = [ { Id: 1, Name: "Item 1", Common_Text_Area__c: "这是第一个内容" }, { Id: 2, Name: "Item 2" }, // 没有目标属性,会被移除 { Id: 3, Common_Text_Area__c: "第三个内容" }, { Id: 4, Name: "Item 4", Other_Field: "无关属性" } // 没有目标属性,会被移除 ]; // 过滤出包含Common_Text_Area__c属性的对象 const filteredArray = originalObjects.filter(obj => { // 使用hasOwnProperty确保只检查对象自身的属性(不会误判原型链上的属性) return obj.hasOwnProperty('Common_Text_Area__c'); }); console.log(filteredArray); // 输出结果:[{ Id:1, ... }, { Id:3, ... }]
进阶:如果需要同时确保属性有有效值
如果你的场景里,不仅要求属性存在,还需要属性值不能是undefined或者空字符串,可以稍微调整判断逻辑:
const filteredArray = originalObjects.filter(obj => { return obj.hasOwnProperty('Common_Text_Area__c') && obj.Common_Text_Area__c !== undefined && obj.Common_Text_Area__c.trim() !== ''; // 排除空字符串(包括全空格) });
为什么用hasOwnProperty()?
可能你会想到直接用if (obj.Common_Text_Area__c),但这样有个问题:如果某个对象的Common_Text_Area__c属性值是null、0或者false,会被误判为不存在。而hasOwnProperty()只会判断属性是否存在,不管它的值是什么,更准确。
内容的提问来源于stack exchange,提问作者Amer Bearat
相关产品推荐
相关产品推荐

