сортировка массивов по убыванию и по возрастанию - PullRequest
0 голосов
/ 07 апреля 2019

написать функцию с именем compareArrays (), которая принимает два массива (длина каждого массива может быть любым числом) и записывает первые элементы этих двух массивов на страницу в порядке возрастания. Он также записывает последние элементы этих двух массивов в порядке убывания. что я могу исправить в своем коде? в чем проблема? Первые 4 элемента должны быть восходящими, а последние 4 должны быть убывающими.

function compareArrays(y, z) {

  for (x = 0; x < y.length; y++) {
    Array.sort((Function(y, z) {
        return z - y
      });

    }
    for (p = 0; p < z.length; z++) {
      Array.sort((function(y, z) {
          return y - z
        })
      }
    }
    var one = [10, 20, 30, 40, 50, 60, 70, 80];

    var two = [60, 70, 80, 90, 100, 110, 120, 130];

Ответы [ 2 ]

1 голос
/ 09 апреля 2019

Проблема простого отображения исходного массива на полпути в порядке возрастания и на полпути в порядке убывания состоит в том, что выходной результат будет 80, 70, 60, 50, 10, 20, 30, 40 ,, потому что когда массив получитсообщение, чтобы начать сортировку в порядке убывания, будет помещать все числа от 50 и выше до 10 20 30 40, потому что оно выше, и оно должно идти первым.

Таким образом, чтобы получить вывод 10, 20, 30, 40, 80, 70, 60, 50, вы можете разбить массив на 2 новых массива, затем отсортировать их, а затем снова объединить их вместе следующим образом:

function sortArrays(a) {
 //slices the value of the passed in array in half, and makes 2 new arrays of it
  var arrayLength1 = a.length;
  var arrayHalf = arrayLength1 / 2;
  var firstHalf = a.slice(0,arrayHalf);
  var secondHalf = a.slice(arrayHalf);

  // sorts one array ascending and the other descending
   firstHalf.sort(ascendingFunction);
   secondHalf.sort(descendingFunction);

 //combines together the 2 arrays, already sorted one ascending and one descending
   var newSortedArray = firstHalf.concat(secondHalf); 
   alert(newSortedArray); // the output you want
    }
function ascendingFunction(a,b){
    return  a - b
    } 

function descendingFunction(a,b){
    return  b - a
    } 

var one = [10, 20, 30, 40, 50, 60, 70, 80];

var two = [60, 70, 80, 90, 100, 110, 120, 130];

теперь вы можете вызывать функцию и передавать все, что угодномассив, который вы хотите, например:

sortArrays(one);
sortArrays(two);
0 голосов
/ 07 апреля 2019

У вас довольно много синтаксических ошибок - вы также пытаетесь отсортировать по самому Array, что делать не следует. Вам нужно отсортировать вставленные вами массивы как в порядке возрастания, так и в порядке убывания, и выписать их:

function compareArrays(arr1, arr2) {
  arr1.sort((a, b) => b - a);
  arr2.sort((a, b) => b - a);
  console.log(`First in ascending order: ${arr1[0]} and ${arr2[0]}`);
  arr1.sort((a, b) => a - b);
  arr2.sort((a, b) => a - b);
  console.log(`Last in descending order: ${arr1[arr1.length - 1]} and ${arr2[arr2.length - 1]}`);
}

var one = [10, 20, 30, 40, 50, 60, 70, 80];
var two = [60, 70, 80, 90, 100, 110, 120, 130, 140, 150];
compareArrays(one, two);
.as-console-wrapper { max-height: 100% !important; top: auto; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...