Maximus Su
Maximus Su

Reputation: 25

How to get the position of element index of an array in an ascending order?

let a=[4, 3, 2, 2, 0, 1]

let b=[0, 1, 2, 2, 3, 4]; //My code demo below help to sort a into ascending order.

Output=[4, 5, 2, 3, 1, 0]; // Get the position of element index in a ascending order. For example, 0 is in index 4, 1 is in index 5, 2 is in index 2,2 is in index 3, and 4 is in index 0. Please Provide a demo. Thank you

var Arr = [4, 3, 2, 2, 0, 1];

for (var i = 1; i < Arr.length; i++) {
  for (var j = 0; j < i; j++) {
    if (Arr[i] < Arr[j]) {
      var x = Arr[i];
      Arr[i] = Arr[j];
      Arr[j] = x;
    }
  }
}


console.log(Arr);

Upvotes: 0

Views: 716

Answers (3)

Mostafa Tabrizian
Mostafa Tabrizian

Reputation: 94

i guess this is what you want
and also i change some other thing in code to be cleaner and readable
you can ask me anything if you want

function sortWithIndex (self) {
  let Arr = [4, 3, 2, 2, 0, 1];
  let result = [];
  let ArrLength = Arr.length;
  for (let i = 0; i < ArrLength; i++) {
    number = Arr[i];
    indexOfNumber = i;
    result.push ('index ' + indexOfNumber + ' is ' + number);
    };
  return result  
  };
console.log(sortWithIndex());

Mostafa.T 🐍

Upvotes: 0

Alan Omar
Alan Omar

Reputation: 4227

you can use Object.entries :

let a=[4, 3, 2, 2, 0, 1]

let result = Object.entries(a).sort((a,b) => a[1]-b[1]).map(e => +e[0])

console.log(result)

Upvotes: 0

Nina Scholz
Nina Scholz

Reputation: 386766

You could get the indices of the unsorted array and sort the indices by the values of the array.

const
    array = [4, 3, 2, 2, 0, 1],
    indices = [...array.keys()];

indices.sort((a, b) => array[a] - array[b]);

console.log(...indices);

Upvotes: 2

Related Questions