Подтвердить что ты не робот

Переместить элемент в объект в последнюю позицию

У меня есть массив объектов. Я хочу переместить выделенный объект в последнюю позицию в массиве. Как это сделать в javascript или jquery?

Вот код, который у меня есть:

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
}

Я зацикливаюсь на этом с циклом for, и я хочу, чтобы вывод упорядочивался так, чтобы все объекты, у которых нет значения "parent_product_type", сначала, а затем те, у которых есть значение.

4b9b3361

Ответ 1

чтобы переместить элемент (из которого вы знаете индекс) в конец массива, сделайте следующее:

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

Если у вас нет индекса и только элемент, сделайте следующее:

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

Пример:

    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]

Ответ 2

Перемещение первого элемента массива в конец того же массива

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

Ответ 3

Используя анонимную функцию, вы можете передать массив и значение для фильтрации.

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');

Вы могли бы сократить это дальше:

let concatToEnd = (arr,val) => arr.filter(x => x !== val).concat(arr.filter(x => x === val))

Эта функция фильтрует элементы, которые не равны переданному значению, затем объединяет результат (до конца фильтруемого массива) другой функции filter которая отфильтровывает элементы, которые равны переданному вами значению.

Эта функция по существу разделяет массив на 2 отфильтрованные части и затем объединяет их обратно

Это не было проверено для вашего варианта использования, но я использовал нечто подобное, чтобы переместить все числа массива в конец индекса.