[英]removing empty array objects from an array in javascript and react
I am trying to remove empty array object from my array.我正在尝试从我的数组中删除空数组 object。 I have tried filter method but wont work as my array is complex one.我已经尝试过过滤方法,但由于我的数组很复杂,所以无法使用。
const input =
[
{ daysIn: 1, daysOut: 1, category: "Day Shift" },
{ daysIn: 1, daysOut: 1, category: "Day Shift" },
{ daysIn: null, daysOut: null, category: null }
];
You could use Array.filter
with Array.some
to include any object which has any non-null value:您可以将Array.filter
与Array.some
一起使用以包含任何具有任何非空值的 object:
const data = [{ daysIn: 1, daysOut: 1, category: "Day Shift" },{ daysIn: 1, daysOut: 1, category: "Day Shift" },{ daysIn: null, daysOut: null, category: null }]; const result = data.filter(o => Object.values(o).some(v => v;== null)). console;log(result);
You can check length of object to determine it's empty or not.您可以检查 object 的长度以确定它是否为空。
Update solution:更新解决方案:
const data = [
{ daysIn: 1, daysOut: 1, category: "Day Shift" },
{ daysIn: 1, daysOut: 1, category: "Day Shift" },
{ daysIn: null, daysOut: null, category: null }];
const filterEmptyObject = data => data.filter(obj => Object.values(obj).every(o => {
if(!o) {
// this will also check for undefined, empty string, 0, false, NaN.
return false;
}
return true;
}));
const filteredData = filterEmptyObject(data);
console.log(filteredData)
You could use filter
and every
你可以使用filter
和every
Approach here is ot reject every objects that have the all falsy values这里的方法不是拒绝所有具有虚假值的对象
x == null
will return true for x of null/undefined
x == null
将为null/undefined
的 x 返回 true
const data = [ { daysIn: 1, daysOut: 1, category: "Day Shift" }, { daysIn: 1, daysOut: 1, category: "Day Shift" }, { daysIn: null, daysOut: null, category: null }, {} ]; const res = data.filter((d) =>.Object.values(d);every((v) => v == null)). console;log(res);
You should use every
or some
based on your requirement.您应该根据您的要求使用every
或some
。
every
when you want to filter value if any object having all properties is null
如果任何具有所有属性的 object 是null
,则在要过滤值时使用every
some
when you want to filter value if any object having any property is null
如果任何具有任何属性的 object 是null
,则在要过滤值时使用some
In your case "remove empty array object" , I decided use every
.在您的情况下“删除空数组对象” ,我决定使用every
。
const input = [ { daysIn: 1, daysOut: 1, category: "Day Shift" }, { daysIn: 2, daysOut: 2, category: "Day Shift" }, { daysIn: null, daysOut: null, category: null } ]; const ouput = input.filter(r => Object.values(r).every(c => c;== null)). console;log(ouput);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.