[英]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.