Tin*_*no' 6 javascript arrays object-properties
我试图找出两个物体之间的差异
previousChart: {BWP: 1, ZAR: 1.3, USD: 0.09324, number: 1},
currentChart: {BWP: 1, ZAR: 1.35, USD: 0.01, number: 2}
Run Code Online (Sandbox Code Playgroud)
期望的答案是:
newObject ={BWP: 0, ZAR: 0.05, USD: 0.08324, number: -1}
Run Code Online (Sandbox Code Playgroud)
请不要问我做了什么,因为这是最后一个阶段,因为这是我代码的最后一部分,如果您有兴趣知道我在这里做了什么,那就是:
rates = [
{BWP: 1, ZAR: 1.3, USD: 0.09324, number: 1},
{BWP: 1, ZAR: 1.35, USD: 0.01, number: 2},
{BWP: 1, ZAR: 1.3456, USD: 0.09234, number: 3},
{BWP: 1, ZAR: 1.27894, USD: 0.06788, number: 4}
]
newRate = [];
for(let i in rates){
if( i - 1 === -1 ){
previousChart = rates[0];
}else{
previousChart = rates[i - 1];
}
let currentChart = rates[i];
}
Run Code Online (Sandbox Code Playgroud)
您可以只循环遍历Object.keys()一个对象的 并使用 减去另一个对象reduce()。这假设两个对象具有相同的键。
let previousChart = {BWP: 1, ZAR: 1.3, USD: 0.09324, number: 1};
let currentChart = {BWP: 1, ZAR: 1.35, USD: 0.01, number: 2};
let newObj = Object.keys(previousChart).reduce((a, k) => {
a[k] = previousChart[k] - currentChart[k];
return a;
}, {});
console.log(newObj);Run Code Online (Sandbox Code Playgroud)
当然,您可以添加一些代码来将浮点处理为您想要的精度。
您可以将其变成一个函数,这将允许您轻松地使用值数组并将它们全部相减:
let rates = [
{BWP: 1, ZAR: 1.3, USD: 0.09324, number: 1},
{BWP: 1, ZAR: 1.35, USD: 0.01, number: 2},
{BWP: 1, ZAR: 1.3456, USD: 0.09234, number: 3},
{BWP: 1, ZAR: 1.27894, USD: 0.06788, number: 4}
];
function subtract(r1, r2) {
return Object.keys(r1).reduce((a, k) => {
a[k] = r1[k] - r2[k];
return a;
}, {});
}
let total = rates.reduce((a, c) => subtract(a, c));
// subtract all values of rates array
console.log(total);Run Code Online (Sandbox Code Playgroud)