我正在按顺序对混合有数字和字符串的数组进行排序,我想返回该数组,而忽略其中的单个文本字符串。这是我的代码。
function mySort(my_sort) {
return my_sort.sort(
function(a, b){
return a-b
});
}
答案 0 :(得分:2)
您可以首先使用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。每当您要返回新的排序数组时,请确保将其复制。
答案 1 :(得分:2)
您可以执行with
正则表达式模式/[a-z]/ig
。如果数字是字符串格式,这意味着用引号'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
答案 2 :(得分:1)
如果要删除字符串,可以执行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);