javascript比较int数组并计算每个数组的差

时间:2018-09-26 21:26:46

标签: javascript arrays node.js loops foreach

我有2个json文件,这些文件会不断修改。其格式如下:

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

因此嵌套键的数量可以是任意数量,在上面的示例中为2。 我遍历文件,并从每个嵌套键中获得所需的值,然后将它们放入数组中。 因此数组就像const array1 = [ "1", "15" ]const array2 = [ "18", "5" ]等。 我现在有2个json文件-数组一个显示先前的排名(在修改之前),另一个显示当前的排名。 我想做的是,遍历数组并减去它们之间的整数,因此我可以创建一个像这样的字符串:“等级:15(-10)”(aka会指出它是增加还是减少以及如何但是,由于数组可以无限大,我必须创建一个循环,用array2 [0]等减去array1 [0]。

不知道如何,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

Kinda对您的问题感到困惑...但我会对此加以说明。似乎您只是在将一个数组的索引位置与另一个数组的索引位置进行比较,并提供一些输出。可以执行以下操作:

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

值得注意的是,该解决方案非常脆弱。它要求两个数组都具有相等的大小,并且所有元素都是整数。如果使用此方法,最好在其中构建一些防护栏,否则如果提供的结构化数据不正确,它将引发错误。

答案 1 :(得分:0)

如果我的理解是正确的,那么您给的情况是给定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