我正在尝试为数组中的每个单词添加字母“x”。将它添加到数组中的每个元素是没有问题的,但在我的情况下,第二个元素由两个单词组成。
根据我的理解,它应以某种方式从'bar','baz'
解构为x
,然后将bar
添加到baz
和'barx'
,然后{{{ 1}}和'bazx'
应该合并到'barx bazx'
。但我不确定。
var array = ['foo', 'bar baz'];
// Pass a function to map
const map = array.map(word => word + 'x');
alert(map);
// Desired output: foox,barx bazx
// For obvious reasons, current output is foox,bar bazx (with no x after bar).
答案 0 :(得分:2)
您可以拆分项目并为每个拆分元素添加'X'
,然后再次加入项目以进行映射。
const plusX = s => s + 'x';
var array = ['foo', 'bar baz'],
result = array.map(
s => s
.split(' ')
.map(plusX)
.join(' ')
);
console.log(result);
答案 1 :(得分:1)
这取决于你对“单词”的定义。例如。是'a + b'是单个单词,两个单词'a'和'b'还是三个单词'a','+'和'b'?
一个简单的解决方案是匹配正则表达式模式并将“x”添加到所有匹配的单词:
const array = ['foo', 'bar baz'];
// Append 'x' to all words:
const map = array.map(str => str.replace(/\w+/g, word => word + 'x'));
console.log(map);
这里,正则表达式\w+
匹配仅由字符a-z,A-Z,0-9和下划线_组成的单词。所以它会用'ax + bx'代替'a + b'。
答案 2 :(得分:1)
设置分隔符并拆分每个元素
const array = ["foo", "bar baz"];
const separator = " ";
// Pass a function to map
const map = array.map(word =>
word
.split(separator)
.map(element => `${element}x`)
.join(separator)
);
alert(map);

答案 3 :(得分:1)
您非常接近,只需添加 parser = argparse.ArgumentParser(description='Change the option prefix characters',prefix_chars='-+',)
即可将word.replace(" ", "x ")
插入上一个字词的末尾和空格之前:
x

答案 4 :(得分:1)
您可以在Array.from()
使用"x"
,定义thisArg
作为默认参数,在RegExp
使用/(\w$)|(\s)/g
.replace()
来匹配单词字符字符串或空格字符的结尾
var array = ['foo', 'bar baz'];
// Pass a function to map
const map = Array.from(array, (word, index, prop = "x") =>
word.replace(/(\w$)|(\s)/g, (_, p1, p2) =>
p1 ? `${p1}${prop}` : `${prop}${p2}`));
console.log(map);