How do you move specified number of elements to the end of an array in javascript?

I have an array of objects. I want to move a selected object to the last position in the array. How do I do this in javascript or jquery?

Here is some code I have:

var sortedProductRow = this.product_row;

for [var s in sortedProductRow] {
    if [sortedProductRow[s]["parent_product_type"] != ""]
        // Move this object to last position in the array
}

I'm looping through this with a for loop, and I want the output to be ordered so that all objects that does not have a "parent_product_type" value comes first, then those with a value.

Paul

6901 gold badge7 silver badges12 bronze badges

asked Jul 23, 2014 at 11:33

3

to move an element [of which you know the index] to the end of an array, do this:

array.push[array.splice[index, 1][0]];

If you don't have the index, and only the element, then do this:

array.push[array.splice[array.indexOf[element], 1][0]];

Example:

    var arr = [1, 2, 6, 3, 4, 5];
    arr.push[arr.splice[arr.indexOf[6], 1][0]];
    console.log[arr]; // [1, 2, 3, 4, 5, 6]

NOTE:

this only works with Arrays [created with the [ ... ] syntax or Array[]] not with Objects [created with the { ... } syntax or Object[]]

Nikola Lukic

3,5915 gold badges39 silver badges69 bronze badges

answered Jul 23, 2014 at 11:42

Ferdi265Ferdi265

2,6391 gold badge16 silver badges15 bronze badges

6

Moving the first element of an array to the end of the same array

    var a = [5,1,2,3,4];
    a.push[a.shift[]];
    console.log[a]; // [1,2,3,4,5]

or this way

    var a = [5,1,2,3,4];
    var b = a.shift[];
    a[a.length] = b;
    console.log[a]; // [1,2,3,4,5]

Moving any element of an array to any position in the same array

    // move element '5' [index = 2] to the end [index = 4]
    var a = [1, 2, 5, 4, 3];
    a.splice[4,0,a.splice[2,1][0]];
    console.log[a]; // [1, 2, 4, 3, 5]

or it could be converted to a prototype as well, like this where x represents the current position of element while y represents the new position in array

var a = [1, 2, 5, 4, 3];
Array.prototype.move = function[x, y]{
      this.splice[y, 0, this.splice[x, 1][0]];
      return this;
    };
    
    a.move[2,4];
    console.log[a]; // ["1", "2", "4", "3", "5"]

Answer to the @jkalandarov comment

function moveToTheEnd[arr, word]{
  arr.map[[elem, index] => {
    if[elem.toLowerCase[] === word.toLowerCase[]]{
      arr.splice[index, 1];
      arr.push[elem];
    }
  }]
  return arr;
}
console.log[moveToTheEnd[["Banana", "Orange", "Apple", "Mango", "Lemon"],"Orange"]];

answered Jul 23, 2014 at 11:46

hex494D49hex494D49

8,8593 gold badges37 silver badges46 bronze badges

6

This is more clean, without using the array index of [0]

const colors = ['white', 'black', 'red', 'blue', 'green'];

// will push the blue to the end of the array
colors.push[colors.splice[colors.indexOf['blue'], 1].pop[]];

console.debug[colors];
// ["white", "black", "red", "green", "blue"]

answered Nov 22, 2020 at 16:33

MedoMedo

3184 silver badges9 bronze badges

Using an anonymous function you can pass in the array and the value to filter by.

let concatToEnd = function [arr, val] {
        return arr.filter[function[x] {
            return x !== val; // filter items not equal to value
        }].concat[arr.filter[function[x] { // concatonate to filtered array
            return x === val; // filter items equal to value 
        }]
    ];
}

// invoke
concatToEnd[array, 'parent_product_type'];

You could probably shorten this further:

let concatToEnd = [arr,val] => arr.filter[x => x !== val].concat[arr.filter[x => x === val]]

This function filters the items which do not equal the value passed in, then concatenates the result [to the end of the filtered array] of another filter function which filters out the items which do equal the value you've passed in.

This function essentially separates the array into 2 filtered parts and then concatenates them back together

This hasn't been tested for your use-case, but I've used something similar to move all numbers of an array to the end of the index.

answered Jan 15, 2019 at 19:41

Immutable way:

const changedArr = [...prevArr.filter[a => a !== element], element]

answered Mar 7 at 14:29

NagibabaNagibaba

3,3241 gold badge31 silver badges37 bronze badges

Move any element to last position - for lodash users:

    const array = ['A', 'B', 'C', 'D'] // output: A, B, C, D

// finds index of value 'B' and removes it
    _.pull[array , 'B'] // output: A, C, D

// adds value of 'B' to last position
    _.concat[array , 'B'] // output: A, C, D, B

answered Nov 6, 2019 at 20:19

AdvemAdvem

212 bronze badges

You can move any number of items by splicing them, then spreading them into a push.

const numberOfItems = 3;
let items = [1,2,3,4,5,6,7,8,9];
items.push[...items.splice[0, itemsToMove]]

answered May 12, 2021 at 9:15

DjaveDjave

7,9897 gold badges63 silver badges113 bronze badges

Moving all items equal so something to the end can also be done by concat.

const myArray = [1, 0, 3, 5, 0, 'a', 3, 's']
    
const moveZerosToEnd = [arr] => {
   return arr.filter[item => item !== 0].concat[arr.filter[item => item === 0]]
}

console.log[myArray]                 // [1, 0, 3, 5, 0, 'a', 3, 's']
console.log[moveZerosToEnd[myArray]] // [1, 3, 5, 'a', 3, 's', 0, 0] 

answered Apr 8 at 8:32

How do you move the first element of an array to the end in JavaScript?

“move first element to last javascript” Code Answer's.
let arr1 = [1, 2, 3, 4, 5].
let arr2 = [1, 2, 3, 4 ,5].
// first to the last..
arr1. push[arr1. shift[]] // [2, 3, 4, 5, 1].
// last to the first..
arr2. unshift[arr2. pop[]] // [5, 1, 2, 3, 4].

How do you move an element to the end of an array in Java?

Input: arr = [2, 1, 2, 2, 2, 3, 4, 2], K = 2..
Output: [4, 1, 3, 2, 2, 2, 2, 2].
Explanation: 2 is the number which has to be moved to the end of the array arr[]. Therefore, after making the change the array is [4, 1, 3, 2, 2, 2, 2, 2]. The numbers 4, 1, and 3 could be ordered differently..

How do you move position of element in array?

To change the position of an element in an array: Use the splice[] method to insert the element at the new index in the array. The splice method changes the original array by removing or replacing existing elements, or adding new elements at a specific index.

How do you end an array in JavaScript?

How to get the last element of an array?.
Use array slice[] to return a specific element..
Retrieve the last element using negative index array. slice[-1].
Save the last element in a variable..

Chủ Đề