Quantcast
Channel: Active questions tagged javascript - Stack Overflow
Viewing all articles
Browse latest Browse all 142129

Order an unordered array of numbers from 1-8, so that the end and starting integers are alternated eg [8,1,7,2,6,3,5,4,]

$
0
0

I'm a newbie to all of this and trying to improve myself by solving problems and challenges.

I came across a problem whereby I have an unordered array which contains 8 integers.

eg [2,3,1,4,6,5,8,7]

I need to sort it [1,2,3,4,5,6,7,8] and reorder the array so that the array starts with the end value and then the first value and so on eg [8,1,7,2,6,3,5,4,]

I worked out I could use map() to iterate across the array and then use push() with pop() and shift() however it leaves the last 2 numbers behind in the original array and I'm not sure why. I got around this by using a concat and a reverse but I still don't understand why pop and shift don't bring across all the elements.

Code below that doesn't pull all the elements:

  const reorder = (array) => {
    let store = []
    array.sort((a, b) => a - b).map((item, i) => {
        if (array) {
            store.push(array.pop())
            store.push(array.shift())
        }
    })
    return store
}


reorder([2, 3, 1, 4, 6, 5, 8, 7]) // returns [8,1,7,2,6,3]


Code that works but I have to add a concat and a reverse:

const reorder = (array) => {
    let store = []
    array.sort((a, b) => a - b).map((item, i) => {
        if (array) {
            store.push(array.pop())
            store.push(array.shift())

        }
    })
    return store.concat(array.reverse()) 
}

reorder([2, 3, 1, 4, 6, 5, 8, 7]) //returns [8,1,7,2,6,3,5,4]

Thanks for any help


Viewing all articles
Browse latest Browse all 142129

Trending Articles