如何通过js中的过滤器运行数组?

时间:2017-11-23 01:25:00

标签: javascript

我有以下代码。

var eqn = c1 + q1 + q2 +  ‘ + ‘ + c2 + w1 + w2 + ‘=‘ + c3 + e1 + e2;

此代码组合字符串而不添加数字。

我认为最好通过使用我可以执行的数组来修改此字符串。我的问题是我想删除变量,如果它等于1.例如,如果c1 == 1那么变量应该像这样定义:var eqn = q1 + q2 + ‘ + ‘ + c2 + w1 + w2 + ‘=‘ + c3 + e1 + e2;我希望这发生在任何一个或多个相等的变量上一个。是否有可用于执行此操作的函数或代码?

3 个答案:

答案 0 :(得分:3)

您可以使用Array.reduce

var string = [c1, q1, q2, ' + ', c2, w1, w2, ' = ', c3, e1, e2]
  .reduce((acc, cur) => cur == 1 ? acc : acc + '' + cur, '');

示例:

以下值

1 + 2 + 3 + ' + ' + 4 + 5 + 6 + ' = ' + 7 + 8 + 9;

将返回

'23 + 456 = 789'

答案 1 :(得分:0)

好的,假设变量是数字的,你可以通过如下的函数运行它们,如果它包含一个函数,它将返回零,算法将运行:

function excludeIfOne(val) {
    return val === 1 ? 0 : val
}

然而,这可能导致一个长杂乱的代码行。请参阅另一个建议使用reduce的答案,我建议自己

答案 2 :(得分:0)

如果您不熟悉reduce,可以使用filterjoin。(喜欢klugjo的方式)

var string = [c1, q1, q2, ' + ', c2, w1, w2, '+', c3, e1, e2];
string.filter(word=> word!=1).join('');