Как заставить массив автоматически меняться при изменении последовательности другого массива? - PullRequest
0 голосов
/ 19 мая 2018

Существует два корреляционных массива.

Как изменить массив при изменении последовательности другого массива с помощью Javascript?

Например, массив1 (1,3,2), массив2 (3,2,1), мне нужно, чтобы массив 2 стал (2,1,3), когда я делаю массив 1 в порядке убывания (3, 2,1)?

Большое спасибо !!

1 Ответ

0 голосов
/ 19 мая 2018

Я думаю, что это то, что вы хотите,

Предполагая, что оба массива имеют одинаковую длину, поэтому всякий раз, когда я изменяю позиции 2 элементов массива, нужно будет также изменять позиции элементов другого массива.

var array1 = [1,3,2];
var array2 = [3,2,1];
var swapArrayElements = function(index1, index2) {
  var temp1 = array1[index1];
  array1[index1] = array1[index2];
  array1[index2] = temp1;

  var temp2 = array2[index1];
  array2[index1] = array2[index2];
  array2[index2] = temp2;
};

swapArrayElements(0,2); //out: array1[2, 3, 1] & array2[1, 2, 3]
swapArrayElements(0,1); //out: array1[3, 2, 1] & array2[2, 1, 3]

Или другой подход,

const array1 = [1,3,2];
const array2 = [3,2,1];

const swapArrayElements = function (x, y, arr) {
  if (arr.length === 1 || x >= arr.length || y >= arr.length) return arr;
  arr.splice(y, 1, arr.splice(x, 1, arr[y])[0]);
};

const swapArrays = (i1, i2, ...args) => {
  for(let i = 0; i < args.length; i++) {
    swapArrayElements(i1, i2, args[i]);
  }
}
swapArrays(0, 2, array1, array2); //out: array1[2, 3, 1] & array2[1, 2, 3]
swapArrays(0, 1, array1, array2); //out: array1[3, 2, 1] & array2[2, 1, 3]

Надеюсь, это поможет.

...