const array = ['7','1','4','a','5','x']
const array = ['7','1','4','a','5','x']
const filteredArray = () =>{
const filterArr = array.filter(item => !isNaN(item))//isNaN()返回的是一个boolean值
const sortArray = filterArr.sort((a,b) => Number(a) - Number(b))
return sortArray
}
const result = filteredArray(array)
console.log(result)
在上面的示例中,首先使用
filter
方法筛选出数组中的非数字元素。在filter
方法的回调函数中,使用isNaN
函数判断每个元素是否为数字,若不是数字则被过滤掉。然后,使用sort
方法对过滤后的数组进行从小到大的排序。这里使用了一个比较函数(a, b) => Number(a) - Number(b)
,它将元素转换为数字后进行比较。最后,通过console.log
打印排序后的数组。在示例中,原数组 [ '7' , '1' , '4' , 'a' , '5' , 'x' ]经过过滤和排序后,得到
['1', '4', '5', '7']
。请注意,过滤后的数组中的元素仍然是字符串类型,但它们可以按照数值进行排序。如果你希望过滤后的数组中的元素是数字类型,可以在
filter
方法中使用Number
函数将每个元素转换为数字,如下所示:
const array = ['7','1','4','a','5','x'];
const filteredArray = () =>{
const filteredArr = array.filter(item => !isNaN(item)).map(Number);
const sortedArray = filteredArr.sort((a, b) => a - b);
return sortedArray
}
const result = filteredArray(array)
console.log(result);
在这个示例中,我们在
filter
方法后添加了map(Number)
,将过滤后的数组中的每个元素转换为数字类型。这样,排序后的数组中的元素将是数字类型。