JavaScript:移除数组中所有属性值均为空的元素
解决JavaScript数组过滤问题:移除全空属性的元素但保留对象内空属性
我来帮你搞定这个问题!你之前的代码有两个关键问题:一是错误地删除了对象里的空属性,这和你的需求完全相悖;二是没把那些所有属性值全为空的对象过滤掉。咱们直接调整代码,精准实现你的需求:
首先明确核心目标:
- 保留对象内部的所有空属性,绝对不能删除它们
- 只移除数组中那些每个属性值都是空字符串的元素
用数组的filter方法就能完美解决,代码如下:
let array = [ { "Product Title": "Milk", "Product Variant": "2L", Quantity: "3" }, { "Product Title": "Water", "Product Variant": "", Quantity: "3" }, { "Product Title": "Pepsi", "Product Variant": "", Quantity: "" }, { "Product Title": "", "Product Variant": "", Quantity: "" }, { "Product Title": "", "Product Variant": "", Quantity: "" } ]; // 过滤数组:仅保留至少有一个属性值非空的对象 let contents = array.filter(item => { // 检查当前对象的所有属性值,只要存在一个非空值,就保留该对象 return Object.values(item).some(value => value !== ""); }); console.log(contents);
代码细节解释:
Object.values(item):获取当前对象的所有属性值,把它们整理成一个数组some(value => value !== ""):判断这个值数组里是否存在至少一个非空字符串。如果有,返回true,该对象会被保留在新数组里;如果所有值都是空,返回false,该对象就会被过滤掉- 整个过程完全不会修改原对象的任何属性,既保留了你想要的空属性,又精准移除了全空的无用元素
运行这段代码后,输出就是你期望的结果:
0: {Product Title: "Milk", Product Variant: "2L", Quantity: "3"}, 1: {Product Title: "Water", Product Variant: "", Quantity: "3"}, 2: {Product Title: "Pepsi", Product Variant: "", Quantity: ""}
内容的提问来源于stack exchange,提问作者DogFoxX
相关产品推荐
相关产品推荐

