我按顺序排序一个数字和字符串混合的数组,我想返回数组,忽略其中的单个文本字符串。这是我的代码。
function mySort(my_sort) {
return my_sort.sort(
function(a, b){
return a-b
});
}
您可以先使用filter()
和typeof
删除所有类型不是数字的变量。我认为你不需要sort()
。
let my_sort = [90, 45, 66, 'bye', 100.5] ;
const res = my_sort.filter(x => typeof x === "number")
console.log(res)
注意:在问题中,您直接在将修改原始数组的参数上使用sort。每当您想要返回新的排序数组时,请务必复制它。
你可以做with
正则表达式/[a-z]/ig
.if数字是字符串格式,这意味着在引号'90'
它也数。它只删除contain alphabets
更新:奇怪的排序
var remove = (my_sort) => my_sort.filter(a => !(/[a-z]/ig.test(a))).sort((a,b)=> (parseFloat(b)%2)-(parseFloat(a)%2))
console.log(remove(['90', 45, 66, 'bye', 100.5])) //number with quotes
console.log(remove(['90t', 45, 66, 'bye', 100.5])) //number contain string
console.log(remove(['6', 5, 6, '1', 100.5])) //odd sort
如果你想删除字符串,你可以做一个filter
并使用isNaN
来检查元素是否是数字
function mySort(my_sort) {
return my_sort.filter(n => !isNaN(parseFloat(n)) && isFinite(n))
.sort((a, b) => a - b);
}
let result = mySort([90, 45, 66, 'bye', 100.5]);
console.log(result);
如果您不想对数字进行排序,您可以只使用filter
。
function mySort(my_sort) {
return my_sort.filter(n => !isNaN(parseFloat(n)) && isFinite(n))
}
let result = mySort([90, 45, 66, 'bye', 100.5]);
console.log(result);