[英]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.