我尝试使用 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个元素,只有3个与0
不同,但它只带来或显示data
的数据,而不是我想要的计算显示给用户。应该注意的是,如果我不使用 data.filter
和 data.map
它会给我带来正确的数据,但它需要 4 个元素(意外结果),因为我只想要 3(在本例中)或与 0
不同的元素。
最佳答案
语法不正确。这些逗号没有做任何事情,所以你的控制台基本上只返回 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
仍然存在问题。和obj.quantity
。您想通过映射实现什么目的?
关于javascript - 我对 `data.filter` 做错了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52409985/