合并一些数组项

Wil*_*Wit 3 javascript arrays functional-programming

我是函数式编程的新手,我尝试执行以下操作:假设我有一个值数组:['a','b-','c']我希望每个以a结尾的项'-'都与以下数组条目合并:['a','b-c'].

当然,我可以通过制作for循环来做到这一点:

var test = ['a', 'b-', 'c'], result = [];

for (var i=0;i<test.length;i++) {
  var curr = test[i];
  if (curr.endsWith('-')) {
    curr += test[i+1];
    i++;
  }
  result.push(curr);
}
Run Code Online (Sandbox Code Playgroud)

但是如果没有for循环,怎么能这样做呢?

Cer*_*rus 5

说实话,你编程的方式可能是最有效的方法.

但是,这是另一种选择:

var test = ['a', 'b-', 'c'],
    result = test.join().replace(/-,/g, '').split(',');

console.log(result);
Run Code Online (Sandbox Code Playgroud)

'a,b-,c'会将所有元素连接成一个字符串:,删除所有出现的'-,'> 'a,bc',然后将字符串拆分为具有所需结果的数组,如输出中所示.

通过更改join/中使用的分隔符,可以稍微进行一些防范split:

var test = ['a', 'b-', 'c'],
    separator = '||',
    result = test.join(separator)
        .replace(new RegExp('-' + separator, 'g'), '')
        .split(separator);
Run Code Online (Sandbox Code Playgroud)