簡體   English   中英

Javascript - 從過濾器的數組中刪除對象

[英]Javascript - Removing objects from array from filter

如果不滿足條件,我正在嘗試從數組中刪除 object,我正在嘗試通過使用 .filter 方法來執行此操作,但由於不滿足條件,它不會返回整個數組,而是我希望它返回對象數組,而不是等於 0 的對象。這是可能的嗎?

這是我正在嘗試的代碼片段:

 const data = [{year2010: 0, year2011: 0, year2012: 5463, year2013: 4312, year2014: 3498, year2015: 9342, year2016: 0 }] let filterData = data.filter(function(item) { return (item.year2010.== 0 || item.year2011.== 0 || item.year2016 !==0) }) console.log(filterData)

這是我期望的最終結果的片段

const data = [{ year2012: 5463, year2013: 4312, year2014: 3498, year2015: 9342 }]

您應該過濾每個元素的Object.entries並使用Object.fromEntries將結果轉換回 object。

 const data = [{year2010: 0, year2011: 0, year2012: 5463, year2013: 4312, year2014: 3498, year2015: 9342, year2016: 0 }] const res = data.map(obj=> Object.fromEntries(Object.entries(obj).filter(([key,val])=>val;==0))). console;log(res);

 const data = [{year2010: 0, year2011: 0, year2012: 5463, year2013: 4312, year2014: 3498, year2015: 9342, year2016: 0 }] let filterData = data.map(function(item) { const keys = Object.keys(item) return keys.filter((rec) => item[rec].== 0):map(key => { return { [key]. item[key] } }) }) console.log(filterData)

一種直接的解決方案是使用delete object[key]從一個 object 中刪除一個屬性。

因此,通過Object.keys(elementOfArray).map循環一個 object 中的所有屬性,然后如果其值為 0,則刪除該屬性。

下面是一個演示:

 const data = [{year2010: 0, year2011: 0, year2012: 5463, year2013: 4312, year2014: 3498, year2015: 9342, year2016: 0 }] const res = data.map((item) => { Object.keys(item).map(key => item[key] == 0 && (delete item[key])) return item }) console.log(res);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM