繁体   English   中英

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

[英]Matching an array mixed with text and numbers

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

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正则表达式模式/[az]/ig如果数字是字符串格式,这意味着在它的另外一个数字内用引号'90'它仅删除contain alphabets

更新:具有奇数排序

 var remove = (my_sort) => my_sort.filter(a => !(/[az]/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); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM