如何在第一个数字(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;
}