javascript сравнивает массивы int и вычисляет разницу для каждого - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть 2 файла json, которые постоянно модифицируются.Их формат выглядит следующим образом:

[ 
  { 
    "rank": 1,
    "points": 10 
  },
  { 
    "rank": 15,
    "points": 1601 
  }
]

, поэтому количество вложенных ключей может быть любым, в приведенном выше примере их 2. Я перебрал файлы и получил нужные значения для каждого вложенного ключа и вставилих в массиве.таким образом, массив выглядит так: const array1 = [ "1", "15" ] & const array2 = [ "18", "5" ] и т. д. Теперь у меня есть 2 файла json - массивы, один из которых показывает предыдущие ранги (до изменения), а другой - текущие.То, что я пытаюсь сделать, это перебрать массивы и вычесть целые числа между ними, чтобы затем я мог создать строку, которая выглядит следующим образом: «Ранг: 15 (-10)» (он также покажет, увеличился или уменьшился и какмного. Но так как массив может быть бесконечно большим, мне нужно создать цикл, который будет вычитать массив1 [0] с массивом2 [0] и т. д.

Не знаю как, кто-то может мне помочь?

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Если мое понимание верно, у вас есть 2 массива целых чисел, вы хотите показать разницу?

/* given 2 arrays (of maybe non-equal length) */
const before = [10,20,30,40,50]
const after = [5,18,35,42,55,100]

/* derive the data needed */
const shorterArray = before.length <= after.length ? before : after
const pairs = shorterArray.map((ele, idx) => 
    ({
      points: ele,
      diff: ele - after[idx]
    })
  )
  
/* print output */
pairs.map(({points, diff}=x) =>             // use object destructuring to separate the elements
  console.log(`Rank: ${points} (${diff})`)) // print output
0 голосов
/ 27 сентября 2018

Вроде смущен твоим вопросом ... но я сделаю удар.Похоже, вы просто сравниваете индексную позицию одного массива с другим и предоставляете некоторый вывод.Может сделать что-то вроде следующего:

const arr1 = [1, 15, 43];
const arr2 = [18, 30, 12];

const compareRanks = (oldArray, newArray) => {
  oldArray.forEach((oldRank, index) => {
    const newRank = newArray[index];
    console.log(`Rank: ${newRank}(${oldRank - newRank})`);
  });
};

compareRanks(arr1, arr2);

Стоит отметить, что это решение хрупкое.Это требует, чтобы ваши массивы имели одинаковый размер, а все элементы были целыми числами.Если вы используете это, лучше всего встроить в него защитные ограждения, иначе будет выдано сообщение об ошибке, если даны неправильно структурированные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...