总和元素是数组返回错误的值

时间:2019-02-04 11:01:19

标签: arrays angular typescript

我有一个名为“今天和昨天”的开关按钮。我有一个值数组。今天单击时,应该将今天的数组值求和,昨天单击时,应该将今天和昨天的值相加并显示。

我在下面遇到一个问题

public val1;
public val2;
public val3;
public val4;
data = [];

if (value == 'a') {
  val1 = arr.reduce((acc, cur) => acc + Number(cur)); // add values inside 
  array
} else if (value == 'b') {
  val2 = arr.reduce((acc, cur) => acc + Number(cur));
} else if (value == 'c') {
  val3 = arr.reduce((acc, cur) => acc + Number(cur));
} else if (value == 'd') {
  val4 = arr.reduce((acc, cur) => acc + Number(cur));
}
this.data.push(this.val1, this.val2, this.val3, this.val4);

最终

arr = [5, undefined, 5,5] arr = [15,10,25,10]

当我今天单击时,其显示[5, undefined, 5,5]是正确的 当我单击昨天时,其显示[20,10,30,15](今天+昨天)是正确的。当我再次单击 today 时,其显示的[5, 10, 5,5] // 10从上一个数组中追加,但其他值没有。我的预期输出值为[5, undefined, 5,5]

2 个答案:

答案 0 :(得分:1)

添加

val1=null;
val2=null;
val3=null;
val4=null;

先于if,然后期望null代替undefied

答案 1 :(得分:0)

JavaScript对象持有对对象的引用,因此解决问题的最佳方法是在迭代过程之前分配 null 值。