Соответствие массиву, смешанному с текстом и числами - PullRequest
1 голос
/ 21 апреля 2019

Я сортирую массив по порядку с номерами и строкой, хочу вернуть массив, игнорируя в нем одну текстовую строку. это мой код.

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

Ответы [ 3 ]

2 голосов
/ 21 апреля 2019

Сначала вы можете использовать filter() и typeof, чтобы удалить все переменные, тип которых не является числом. Я не думаю, что вам нужно sort().

let my_sort = [90, 45, 66, 'bye', 100.5] ;
const res = my_sort.filter(x => typeof x === "number")

console.log(res)

Примечание : В вопросе вы используете сортировку непосредственно по аргументу, который изменит исходный массив. Всякий раз, когда вы хотите вернуть новый отсортированный массив, обязательно скопируйте его.

2 голосов
/ 21 апреля 2019

Вы можете сделать 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 голос
/ 21 апреля 2019

Если вы хотите удалить строку, вы можете сделать 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...