字符串的传播运算符

Moa*_*nas 3 javascript ecmascript-6 spread-syntax

我在MDN上阅读了有关扩展语法的内容,并且它可以与数组和字符串一起使用:

扩展语法允许在可能需要零个或多个参数(用于函数调用)的地方扩展诸如数组表达式或字符串之类的可迭代- mdn.

我很清楚数组.它会将元素扩展为单独的参数.
但我没有找到字符串的例子.

那么,使用扩展语法在函数调用中扩展字符串的规则是什么?
如果字符串字符用空格分隔,因为我试过这个并打印3.

var x = "1 2 3";
console.log(Math.max(...x));
Run Code Online (Sandbox Code Playgroud)

Oli*_*n04 5

正如我们在下面看到的,您的示例实际上是扩展到5个元素,其中2个是空格字符.您还可以在下面看到字符串上的扩展运算符与使用相同.split('').

const x = "1 2 3";
console.log([...x]);

console.log(x.split(''));
Run Code Online (Sandbox Code Playgroud)

  • `[..."‍❤️‍"]` 将创建一个包含 6 个项目的数组,而 `"‍❤️‍".split("")` 将创建一个包含 8 个项目的数组 (2认同)

Rok*_*jan 5

空字符串上的 Math.max 对空字符串进行计算,例如+" "orNumber(" ")因此0

const str = "1 2 3";
console.log( Math.max(...str))  // ["1"," ","2"," ","3"] >>> [1,0,2,0,3] >>> 3
Run Code Online (Sandbox Code Playgroud)

直接用数字传播字符串是不明智的34 8 9,因为最大值将达到9。始终事先用分隔符(一个或多个空格分隔:num.split(/ +/)

const str = "1 34 9 2";

// Issue:
console.log( Math.max(...str) )  // 9   since [1,0,3,4,0,9,0,2]

// Fix:
console.log( Math.max(...str.split(/ +/)) ) // 34
Run Code Online (Sandbox Code Playgroud)