Как отсортировать многомерный массив на основе одного столбца в JavaScript - PullRequest
1 голос
/ 14 марта 2012

У меня есть 4-х мерный массив в JavaScript. Один столбец содержит значения String, а остальные три столбца содержат значения с плавающей запятой. Я заполнил первые 3 столбца из ответа JSON, а четвертый столбец содержит величину значений col2 и col3. Мне нужно отсортировать весь массив на основе значений в col4. Следующий код показывает, как я создал массив. Может кто-нибудь подскажите, пожалуйста, как отсортировать этот массив на основе col4?

     var labels = responseJSON.labels;
     var knowledge = responseJSON.knowledge;
     var interest = responseJSON.interest;

     var label_know_int_array = new Array(3);
     //array item 0 contains all the labels
     label_know_int_array[0] = new Array(200);
     //array item 1 contains knowledge values
     label_know_int_array[1] = new Array(200);
     //array item 2 contains all the interest values
     label_know_int_array[2] = new Array(200);
    //array item 3 contains the magnitude of knowledge and interest
     label_know_int_array[3] = new Array(200);

     for(var i=0;i<labels.length;i++)
         {
                label_know_int_array[0][i] = labels[i];
                var knowVal = knowledge[i];
                var intVal = interest[i];
                label_know_int_array[1][i] = knowVal;
                label_know_int_array[2][i] = intVal ;

                var squareSum = (knowVal*knowVal) + (intVal*intVal);
                var distance = Math.sqrt(squareSum);
                label_know_int_array[3][i] = distance ;


         }

1 Ответ

1 голос
/ 14 марта 2012

Вы можете использовать собственный Array.sort() метод

Метод Array.sort принимает обратный вызов для пользовательской сортировки

вот пример кода

var arr = [
  {
    id : 5,
    name : "john"
  },
  {
    id : 2,
    name : "Sam"
  },
  {
    id : 6,
    name : "adams"
  }
];

// custom sort
 arr.sort(function (a, b) {
    if (a.id > b.id) {
       return 1;   //return any +ve values
    } else if (a.id < b.id) {
       return -1;  // return any -ve values
    } else {
       return 0;  // return zero for equal values
    }
 });

Использование этого обратного вызоваВы можете реализовать свои собственные функции сортировки

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