匹配包含文本和数字的数组

时间:2019-04-21 15:41:37

标签: javascript arrays match

我正在按顺序对混合有数字和字符串的数组进行排序,我想返回该数组,而忽略其中的单个文本字符串。这是我的代码。

function mySort(my_sort) {
return my_sort.sort(
  function(a, b){
    return a-b
  });
}

3 个答案:

答案 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);