簡體   English   中英

從 javascript 中的數組中刪除空數組對象並做出反應

[英]removing empty array objects from an array in javascript and react

我正在嘗試從我的數組中刪除空數組 object。 我已經嘗試過過濾方法,但由於我的數組很復雜,所以無法使用。

const input = 
[
  { daysIn: 1, daysOut: 1, category: "Day Shift" },
  { daysIn: 1, daysOut: 1, category: "Day Shift" },
  { daysIn: null, daysOut: null, category: null }
];

您可以將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);

您可以檢查 object 的長度以確定它是否為空。

更新解決方案:

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)

你可以使用filterevery

這里的方法不是拒絕所有具有虛假值的對象

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);

您應該根據您的要求使用everysome

  • 如果任何具有所有屬性的 object 是null則在要過濾值時使用every
  • 如果任何具有任何屬性的 object 是null則在要過濾值時使用some

在您的情況下“刪除空數組對象” ,我決定使用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