简体   繁体   English

从 javascript 中的数组中删除空数组对象并做出反应

[英]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.filterArray.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你可以使用filterevery

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.您应该根据您的要求使用everysome

  • Use every when you want to filter value if any object having all properties is null如果任何具有所有属性的 object 是null则在要过滤值时使用every
  • Use 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM