Как отсортировать только числовые значения в массиве? - PullRequest
0 голосов
/ 14 февраля 2019

var points = [2, a, t, 5, 4, 3];и после сортировки: var points = [2, a, t, 3, 4, 5];

Любая помощь по этому поводу?возможно опубликовать вашу помощь со старым стилем javascript кода, потому что я работаю над проектом Adobe DC?

мой код есть:

var points = [t1, t2, t3, t4];
[t1, t2, t3, t4] = points;

var lucky = points.filter(function(number) {
  return isNaN(number) == false && number !=="" && number!== undefined;
});
points=lucky
points.sort(function(a, b){return a - b});

this.getField("Text6").value = points

, но это только сортировка от мин до макс и фильтрация другихсимволы ... мне нужно сохранить другие символы и короткие только цифры ...

Ответы [ 4 ]

0 голосов
/ 14 февраля 2019

Следующее должно дать точный вывод с учетом вашего ввода:

var result = [2, 'a', 't', 5, 4, 3].reduce(
  function(result,item){
    return !isNaN(item)&&item!==''
      ? typeof (result[result.length-1] && result[result.length-1].push) === 'function'
        ? (result[result.length-1].push(item),result)
        : result.concat([[item]])
      : result.concat(item)
  },
  []
).map(
  function(item){
    return typeof item.sort === 'function'
      ? item.sort(function(a,b){return a-b})
      : item
  }
).reduce(
  function(result,item){
    return result.concat(item)
  },[]
);

console.log(result);
0 голосов
/ 14 февраля 2019

filter() чисел вне массива.Затем sort() их, а затем переберите реальный массив.И проверьте, если значение Number изменить, это будет первый элемент отсортированного массива.И удалить первый элемент sortedArr

let arr = [5, 't', 's', 2,3,4];
let sortedNums = arr.filter(x => typeof x === 'number').sort((a,b) => a-b);
arr.forEach((a,i) => {
  if(typeof a === 'number'){
    arr[i] = sortedNums[0]
    sortedNums.shift();
  } 
})

console.log(arr)
0 голосов
/ 14 февраля 2019

Вы можете сделать это более эффективно, избегая splice(), если просто переназначить значения на месте.

Фильтр, сортировка, переназначение для сортировки чисел на месте:

let arr = ['c', 2, 'a', 't', 5, 4, 3, 'b', 1]

let n = arr.filter(c => typeof c == "number").sort((a, b) => a-b)
for (let i = 0, c=0; i<arr.length; i++){
    if (typeof arr[i] == "number") arr[i] = n[c++]
}
console.log(arr)
0 голосов
/ 14 февраля 2019

var points = [2, "a", "t", 5, 4, 11, "", 3];
var insert = points.slice(0); // Clone points

// Remove all elements not a number
points = points.filter(function(element) {
  return typeof element === 'number';
});

// Sort the array with only numbers
points.sort(function(a, b) {
  return a - b;
});

// Re-insert all non-number elements
insert.forEach(function(element, index) {
  if (typeof element !== 'number') {
    points.splice(index, 0, element);
  }
});

console.log(points);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...