在这里,我们使用键和值创建了Hashmap。然后,我们使用array.map获得结果。即,如果输入“ cat”,则将输出为“ dog”。我没有得到如何使用传播语法。
var rule =
{
"c": "d",
"a": "o",
"t": "g",
"h": "a",
"e": "n",
"n": "t",
}
function output(str) {
return [...str].map(d => rule[d]).join('')
}
console.log(output('cat'))
答案 0 :(得分:0)
扩展语法会将其转换为包含其字符的数组。这是可行的,因为字符串是可迭代的集合。 http://es6-features.org/#SpreadOperator
答案 1 :(得分:0)
它需要一个可迭代对象,并使用spread syntax ...
返回可迭代对象的每个项目。
在这种情况下,字符串被拆分为字符数组。
['c', 'a', 't']
如果使用具有内置映射参数的Array.from
,则可以实现相同的结果。
var rule = { c: "d", a: "o", t: "g", h: "a", e: "n", n: "t" }
function output(str) {
return Array.from(str, d => rule[d]).join('');
}
console.log(output('cat')) ;
答案 2 :(得分:0)
在您的情况下,传播运算符将字符串“ cat”扩展为包含['c','a','t']]的字符数组
然后遍历此数组以提供与值匹配的输出字符串。在那里,您将获得字符串“ dog”作为输出!
答案 3 :(得分:0)
您无法直接将map
应用于字符串,因为String
没有这样的方法。使用传播语法,您可以获得单个字符的数组,然后可以将map
应用于该数组。
实际上,最好改用Array.from
,因为它不会创建中间数组,并且仍然允许您对每个字符执行函数(使用第二个参数):
Array.from(str, d => rule[d]).join('')
答案 4 :(得分:0)
分解:
[...str]
礼物:['c', 'a', 't'];
在这种情况下,spread语法将字符串分成一个数组。每个索引代表字符串中的字母。
.map(d => rule[d])
将上面的数组转换为:
['d', 'o', 'g']
当它遍历每个值并使用javascript对象获取其值时:(因此'c'映射为'd'为rule['c'] = 'd'
,'a'映射为'o'等)
.join('')
将上面的数组转换为字符串dog
因此,正在做
console.log(output('cat'))
送礼:“狗”