如何在第一个数字(Javascript、.split)后添加空格

如何在第一个数字(Javascript、.split)后添加空格,javascript,Javascript,我有一个函数,它接受一个数字字符串并返回最高和最低的数字 功能: function highAndLow(numbers){ var split = numbers.split(' ').map(Number); var min = Math.min.apply(null, split).toString() var max = Math.max.apply(null, split).toString() var empty = ""

我有一个函数,它接受一个数字字符串并返回最高和最低的数字

功能:

function highAndLow(numbers){

      var split = numbers.split(' ').map(Number);
      var min = Math.min.apply(null, split).toString()
      var max = Math.max.apply(null, split).toString()
      var empty = ""
      var x = empty.concat(max, min).split("").join("");
      return x
    }

    highAndLow("1 9 3 4 -5"); // return "9 -5"

问题是现在它返回的是
“9-5”
,我需要它返回
“9-5”
在这两者之间加一个空格

功能高低(数字){
var split=数字。split(“”)。map(数字);
var min=Math.min.apply(null,split).toString()
var max=Math.max.apply(null,split).toString()
var empty=“”
var x=空。concat(最大值,“,最小值);
返回x;
}

console.log(高低(“1 9 3 4-5”);//返回“9-5”
您不需要进行
拆分
加入
。只需使用
concat
添加空格即可

功能高低(数字){
var split=数字。split(“”)。map(数字);
var min=Math.min.apply(null,split).toString()
var max=Math.max.apply(null,split).toString()
var x=最大浓度(“,最小值);
返回x
}
console.log(高低(“1934-5”)使用字符串连接。
在es5中:


将代码拆分为单独的函数将有助于简化整体的各个部分:

function getMinAndMax(numbers) {
    return {
        min: Math.min.apply(null, numbers),
        max: Math.max.apply(null, numbers),
    };
}

function getMinAndMaxViaString(input) {
    var numbers = input.split(' ').map(Number);
    var minAndMax = getMinAndMax(numbers);
    return minAndMax.min + ' ' + minAndMax.max;
}
这允许您独立地使用和修改每个函数,原始函数和委托函数


对于您问题的原意,只需将字符串与一个空格连接在一起就足够了。

这可以大大简化-例如,这段代码将在自IE5.5以来任何支持JS的浏览器的任何版本上运行,因此您可以像1999年一样参加聚会

函数高低(数字串){
var split=numberString.split(“”).sort(函数(a,b){返回a-b});
返回split.pop()+“”+split.shift();
}

console.log(高低(“1 9 3 4-5”);//返回“9-5”
您可以使用
+
运算符连接字符串:
var x=max+“”+min否决我的原因?不告诉我为什么就这么做有什么意义?完全是胡说八道。如果你是来寻求答案的,不要担心选票。不要担心落选。很可能有人觉得你没有尽力解决这个相当琐碎的问题。例如,在同一事物上拆分和联接完全不起任何作用,而concat通常用于arraysOr,或者只使用简单的数字排序来运行在任意对象上browser@mplungjan:是的,排序会起作用,但我个人会避免它,因为它通常是一个慢得多的操作。除了spread之外,所有浏览器都可以使用这些功能。spread可以通过还原到
.apply()
版本来解决。我想知道排序是否像大型阵列上的spread一样脆弱:@mplungjan:我敢打赌,它很有可能在某些实现中尚未得到充分优化,但这并不是它固有的特性。排序虽然当然也可以被优化,但通常仍然会是一个更复杂的操作。@mplungjan:我发现一个jsPerf可以将
Math.max
进行比较。如果您感兴趣,可以将
.sort()
应用于使用
.sort()
:我认为这是一个关于不做什么的好例子。除了排序几乎是查找最小值和最大值的最不有效的方法外,这个版本的字符串到数字的转换次数是原来的4倍(
a-b
),与
split[0]
相比,shift要慢得多。对于5位数字,它完全不相关,而且
var split=numbers.split('').map(number)做什么?
function getMinAndMax(numbers) {
    return {
        min: Math.min.apply(null, numbers),
        max: Math.max.apply(null, numbers),
    };
}

function getMinAndMaxViaString(input) {
    var numbers = input.split(' ').map(Number);
    var minAndMax = getMinAndMax(numbers);
    return minAndMax.min + ' ' + minAndMax.max;
}