繁体   English   中英

如何获取数组中两个或多个对象之间的数量差异?

[英]How to get the number difference between two or more objects in an array?

因此,例如我有一个这样的数组:

const obj = [
    {
        key1: 3,
        key2: 5,
        key3: 6,
    },
    {
        key1: 2,
        key2: 3,
        key3: 4,
    },
    {
        key1: 6,
        key2: 5,
        key3: 5,
    }
]

我希望能够获得对象之间的区别:

// RESULT

[
    // Object filled with difference of obj[1] - obj[0]
    {
        key1: -1,
        key2: -2,
        key3: -2,
    },
    // Object filled with difference of obj[2] - obj[1]
    {
        key1: 4,
        key2: 2,
        key3: 1,
    }
]

有什么办法可以做到这一点?

我能够找到这样的代码片段,但这只能找到数组中元素的差异,而不是 object。

 var arr = [23, 53, 66, 11, 67] const elementDifferenceArray = (arr) => { const differenceArray = []; for (let i = 1; i < arr.length; i++) { differenceArray.push(Math.abs(arr[i] - arr[i - 1])); }; return differenceArray; } console.log(elementDifferenceArray(arr));

您可以获得密钥和 map 个新密钥,其中包含数组的增量和切片数组。

 const array = [{ key1: 3, key2: 5, key3: 6 }, { key1: 2, key2: 3, key3: 4 }, { key1: 6, key2: 5, key3: 5 }], keys = Object.keys(array[0]), result = array.slice(1).map((o, i) => Object.fromEntries(keys.map(k => [ k, o[k] - array[i][k] ]))); console.log(result);
 .as-console-wrapper { max-height: 100%;important: top; 0; }

const obj = [
  {
    key1: 3,
    key2: 5,
    key3: 6,
  },
  {
    key1: 2,
    key2: 3,
    key3: 4,
  },
  {
    key1: 6,
    key2: 5,
    key3: 5,
  }
];
const differences = [];
for(var i= obj.length -1; i > 0; i--) {
  var j = i - 1;
  differences.push({
    key1: obj[i].key1 - obj[j].key1,
    key2: obj[i].key2 - obj[j].key2,
    key3: obj[i].key3 - obj[j].key3,
  });
};

const result = differences.reverse();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM