Перестановка объекта массива Angularjs $ - PullRequest
1 голос
/ 08 июля 2019

У меня есть массив json, который я назначаю объекту $ scope для отображения на внешнем интерфейсе.Я хочу переставить этот массив на основе заданного идентификатора.Вот так выглядит мой исходный массив.

$scope.listData = [{
id: 1,
name: adam,
title: testing title,
description: testing description
},
{
id: 2,
name: zampa,
title: testing title,
description: testing description
},
{
id: 3,
name: Aaron,
title: testing title,
description: testing description
}]

Для перестановки, Для экземпляра, если задан id 3, перестановка записей должна быть как 3,1,2.

Я пыталсяс помощью цикла angular.forEach, но не удалось.

Ответы [ 2 ]

1 голос
/ 08 июля 2019

Вот решение, использующее splice() и unshift():

function moveToFront(id, array) {
  const i = array.findIndex(v => v.id === id);

  array.unshift(...array.splice(i, 1));
}

Полный фрагмент:

const listData = [{
    id: 1,
    name: 'adam',
    title: 'testing title',
    description: 'testing description'
  },
  {
    id: 2,
    name: 'zampa',
    title: 'testing title',
    description: 'testing description'
  },
  {
    id: 3,
    name: 'Aaron',
    title: 'testing title',
    description: 'testing description'
  }
];

function moveToFront(id, array) {
  const i = array.findIndex(v => v.id === id);
  
  array.unshift(...array.splice(i, 1));
}

moveToFront(3, listData);

console.log(listData);
0 голосов
/ 08 июля 2019

// Предполагается, что он изначально отсортирован по идентификатору, начиная с первого

listData.splice(0, 0, listData.splice(id - 1, 1)[0]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...