Как поменять местами JSON - PullRequest
       16

Как поменять местами JSON

2 голосов
/ 23 сентября 2019

В моем угловом коде при загрузке страницы есть список кнопок, таких как кнопка 1, кнопка 2, кнопка 3 и т. Д. При нажатии на каждую кнопку отображается J-SON на консоли, структура одинакова для всех кнопок, но значения различаются,На странице есть еще две кнопки вверх и вниз.

Мой вопрос: если выбрана кнопка 2, и я нажимаю кнопку вверх, то положение кнопки 2 должно быть перемещено вверх до кнопки 1, для этого мы используем однуатрибут в j-son, но проблема m в том, что я должен поменять местами весь j-son, например, как поменять местами положение кнопки 2 на кнопку 1 и наоборот: стрелка вниз

искал обмен в Google, но этопоказывает элементы в массиве для обмена.Я хочу, чтобы весь J-сын поменялся местами

up(){ 
  exchange(this.jsondata,up,up+1); 
} 

private exchange(array: any, x: any, y: any) { 
  const temp = array[x]; 
  array[x] = array[y]; 
  array[y] = temp; 
  return array; 
}

, это должно изменить положение кнопок при нажатии кнопок вверх / вниз

1 Ответ

2 голосов
/ 23 сентября 2019

Если вы хотите поменять местами два элемента в массиве, ваша функция обмена выглядит нормально.

Но вы вызываете его только с 2 параметрами: up(up, up+1), в то время как ваша функция принимает 3 параметра:

  • массив, в котором элементы
  • первый элемент
  • второй элемент

Если бы ваши кнопки были в массиве с именем myButtons, вы, вероятно, захотите назвать его так:

up(myButtons, up, up+1);

Примечания:

  • будьте осторожны с именами параметров. Array - это глобальный объект JavaScript.Не рекомендуется использовать это имя для переменной.
  • up - это, очевидно, имя функции и переменной.Это немного сбивает с толку.
  • Ваша функция возвращает массив, который был передан как параметр.В этом нет необходимости, поскольку массивы передаются как ссылки.Вы можете сделать вашу функцию неизменной и заставить ее возвращать другой массив.Или измените ссылку и ничего не возвращайте.
...