我正在尝试使用data.filter()
过滤数据,因为我需要找到不等于0
的元素,直到此处以正确的方式过滤数据为止:
代码
this.tax = data.filter((item) =>item.value_tax != 0)
.map((item) => +item.value_tax )
.reduce((acc, obj) => acc +
(
(((Number(obj.cost) * Number(obj.quantity)) - ((Number(obj.cost) * Number(obj.quantity) * Number(obj.discount)) / 100)) * Number(obj.calculate_tax))
)
-
(
(((Number(obj.cost) * Number(obj.quantity)) - (Number(obj.cost) * Number(obj.quantity) * Number(obj.discount)) / 100))
),
0);
console.log("Tax: ", this.tax)
结果控制台
Tax:
(3) […]
0: Object { id_factura_pivote: "1", cantidad_factura_pivote: "3", fecha_factura_pivote: "2018-09-14", … }
1: Object { id_factura_pivote: "5", cantidad_factura_pivote: "20", fecha_factura_pivote: "2018-09-14", … }
2: Object { id_factura_pivote: "6", cantidad_factura_pivote: "1", fecha_factura_pivote: "2018-09-19", … }
length: 3
在我的情况下,我有4个元素,与0
仅有3个不同,但它仅带来或显示data
的数据,而不是我想要显示给用户的计算。应该注意的是,如果我不使用data.filter
和data.map
,则会为我带来正确的数据,但它需要4个元素(意外结果),因为我只需要3个元素(在这种情况下)或与0
不同的元素。
答案 0 :(得分:1)
这可能是因为您使用的是单个变量this.tax
,所以data.map
会覆盖this.tax中data.filter
设置的值
答案 1 :(得分:1)
语法不正确。这些逗号没有执行任何操作,因此您的控制台基本上只返回{{1}}的结果。这些方法需要链接。
filter
即使如此,如何将数组中的项目映射为数字,然后尝试访问data.filter((item) =>item.value_tax != 0)
.map((item) => +item.value_tax )
.reduce((acc, obj) => acc +
(
(((Number(obj.cost) * Number(obj.quantity)) - ((Number(obj.cost) * Number(obj.quantity) * Number(obj.discount)) / 100)) * Number(obj.calculate_tax))
)
-
(
(((Number(obj.cost) * Number(obj.quantity)) - (Number(obj.cost) * Number(obj.quantity) * Number(obj.discount)) / 100))
),
和obj.cost
仍然存在问题。您想通过映射完成什么?