在此示例中,扩展语法的目的是什么?

时间:2018-11-25 09:32:37

标签: javascript arrays

在这里,我们使用键和值创建了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')) 

5 个答案:

答案 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'))

送礼:“狗”