繁体   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