Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

185
Views
Function that takes an array and returns elements inside rotated n spaces in js

Create a function named "rotate" that takes an array and returns a new one with the elements inside rotated n spaces.

If n is greater than 0 it should rotate the array to the right. If n is less than 0 it should rotate the array to the left. If n is 0, then it should return the array unchanged.

Example:

var data = [1, 2, 3, 4, 5];

rotate(data, 1) // => [5, 1, 2, 3, 4]
rotate(data, 2) // => [4, 5, 1, 2, 3]
rotate(data, 3) // => [3, 4, 5, 1, 2]
rotate(data, 4) // => [2, 3, 4, 5, 1]
rotate(data, 5) // => [1, 2, 3, 4, 5]

rotate(data, 0) // => [1, 2, 3, 4, 5]

rotate(data, -1) // => [2, 3, 4, 5, 1]
rotate(data, -2) // => [3, 4, 5, 1, 2]
rotate(data, -3) // => [4, 5, 1, 2, 3]
rotate(data, -4) // => [5, 1, 2, 3, 4]
rotate(data, -5) // => [1, 2, 3, 4, 5]

Furthermore the method should take ANY array of objects and perform this operation on them:

rotate(['a', 'b', 'c'], 1)     // => ['c', 'a', 'b']
rotate([1.0, 2.0, 3.0], 1)     // => [3.0, 1.0, 2.0]
rotate([true, true, false], 1) // => [false, true, true]

Finally, the rotation shouldn't be limited by the indices available in the array. Meaning that if we exceed the indices of the array it keeps rotating.

Example:

var data = [1, 2, 3, 4, 5]
rotate(data, 7)     // => [4, 5, 1, 2, 3]
rotate(data, 11)    // => [5, 1, 2, 3, 4]
rotate(data, 12478) // => [3, 4, 5, 1, 2]
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

You could basically do this with a while loop and increment or decrement based on the number parameter, if its positive or negative.

function rotate(data, n) {
  const output = [...data]

  if (n === 0) {
    return data
  }

  const neg = n < 0
  const last = output.length - 1
  const toIndex = neg ? last : 0
  const index = neg ? 0 : last

  while ((neg ? n++ : n--) !== 0) {
    output.splice(toIndex, 0, output.splice(index, 1)[0])
  }

  return output
}


var data = [1, 2, 3, 4, 5];

console.log(rotate(data, 2)) // => [4, 5, 1, 2, 3]
console.log(rotate(data, 3)) // => [3, 4, 5, 1, 2]
console.log(rotate(data, 4)) // => [2, 3, 4, 5, 1]
console.log(rotate(data, 5)) // => [1, 2, 3, 4, 5]


console.log(rotate(data, -1)) // => [2, 3, 4, 5, 1]
console.log(rotate(data, -2)) // => [3, 4, 5, 1, 2]
console.log(rotate(data, -3)) // => [4, 5, 1, 2, 3]
console.log(rotate(data, -4)) // => [5, 1, 2, 3, 4]
console.log(rotate(data, -5)) // => [1, 2, 3, 4, 5]

console.log(rotate(['a', 'b', 'c'], 1))
console.log(rotate([true, true, false], 1))

about 4 years ago · Juan Pablo Isaza Report

0

function rotate(array,n){
  let len = array.length;
  n=Math.abs(n)>len?n%len:n
   if(n>0){
    let firstPart=array.slice(len-n,len);
    let lastPart=array.slice(0,len-n);
    console.log(firstPart,lastPart)
    return [...firstPart,...lastPart]
   }else{
    let firstPart=array.slice(0,n);
    let lastPart=array.slice(n,len);
    console.log(firstPart,lastPart)
    return [...lastPart,...firstPart]
   }
}
    console.log(rotate([1, 2, 3, 4, 5],1));

This code passes almost all tests but some tests cannot be passed. So can anyone help me with this?

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!