匹配与文本和数字混合的数组

问题描述 投票:1回答:3

我按顺序排序一个数字和字符串混合的数组,我想返回数组,忽略其中的单个文本字符串。这是我的代码。

function mySort(my_sort) {
return my_sort.sort(
  function(a, b){
    return a-b
  });
}
javascript arrays match
3个回答
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。每当您想要返回新的排序数组时,请务必复制它。


2
投票

你可以做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

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);
© www.soinside.com 2019 - 2024. All rights reserved.