我可以使用forEach更改许多变量吗?

时间:2019-02-05 07:37:57

标签: javascript

我必须计算一些变量,并希望减少代码。这是我当前的代码:

z = a+b+c+d+e+f;   // a-f are integer numbers
a = Math.round(a/z*100)+20;
b = Math.round(b/z*100)+20;
c = Math.round(c/z*100)+20;
d = Math.round(d/z*100)+20;
e = Math.round(e/z*100)+20;
f = Math.round(f/z*100)+20;

有没有一种方法可以减少代码

[a,b,c,d,e,f].forEach(function(i) { Math.round(i/z*100)+20; } );

3 个答案:

答案 0 :(得分:3)

您可以将结果映射并解构为变量:

var a = 1,
    b = 2,
    c = 3,
    d = 4,
    e = 5,
    f = 6,
    z = [a, b, c, d, e, f].reduce((a, b) => a + b);

[a, b, c, d, e, f] = [a, b, c, d, e, f].map(i => Math.round(i / z * 100) + 20);

console.log(a);
console.log(b);
console.log(c);
console.log(d);
console.log(e);

答案 1 :(得分:1)

您可以使用map

@import '~bootstrap/scss/bootstrap.scss';

@include media-breakpoint-up(md) {
  // 3 cards on tablet
  @include make-col(4);
}
// ... other component css rules


}

答案 2 :(得分:0)

改为使用对象或数组,然后可以使用数组方法来变换或重新分配所有所需的属性。例如:

const initialArr = [a, b, c, d, e, f];
const transformedArr = initialArr.map(num => Math.round(num/z*100)+20);

transformedArr[0]将对应于atransformedArr[1]将对应于b,依此类推。 (理想情况下,您开始将所有这些变量从头开始放在数组中。)