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循环,怎么能这样做呢?
说实话,你编程的方式可能是最有效的方法.
但是,这是另一种选择:
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)