Javascript 如果don';我没有
假设我有两个数组要比较:Javascript 如果don';我没有,javascript,arrays,typescript,Javascript,Arrays,Typescript,假设我有两个数组要比较: var arrOriginal={currency1: 1234, currency2: 2345}; var arrToCompare={currency1: 123}; 我试图找出两者之间的区别 示例结果: var result={currency1: 1111, currency2: 2345} 我所尝试的: 将用于。。在中,然后减去 for (var key in this.arrOriginal) { this.result.push({ cu
var arrOriginal={currency1: 1234, currency2: 2345};
var arrToCompare={currency1: 123};
我试图找出两者之间的区别
示例结果:
var result={currency1: 1111, currency2: 2345}
我所尝试的:
将用于。。在
中,然后减去
for (var key in this.arrOriginal) {
this.result.push({
currency: key,
amount: format.formatCurrency(this.arrToCompare[key] - this.arrOriginal[key])
});
}
但是它不会显示第二个数组没有的货币密钥
非常感谢您的帮助。您可以为对象的
未定义的属性设置默认值零
由内而外:
- 以键/值对数组的形式从对象中获取条目
- 映射此条目并获得一个具有键和值的对象,该值与另一个对象的对应值之差或为零
- 将对象作为的参数展开
- 并从映射中获取包含所有对象的新对象
var original={currency1:1234,currency2:2345},
Delta={currency1:123},
结果=Object.assign(
{},
…Object.entries(original.map)([k,v])=>({[k]:v-(delta[k]| | 0}))
);
控制台日志(结果)
一种非常简单的方法是在原始的键上循环,如果该键出现在arrToCompare
中,则减去该值,否则不减去
for (var key in this.arrOriginal) {
this.result.push({
currency: key,
amount: format.formatCurrency(this.arrToCompare[key] - this.arrOriginal[key])
});
}
var arrOriginal={currency1:1234,currency2:2345};
var arrToCompare={currency1:123};
var out={}
for(原始中的var键){
out[key]=原始[key]-(arrToCompare[key]| | 0)
}
console.log(out)
您可以使用Object.entries
和reduce
var arrOriginal={currency1:1234,currency2:2345};
var arrToCompare={currency1:123};
让final=Object.entries(arrOriginal).reduce((op,[key,value])=>{
op[key]=值-(arrToCompare[key]| | 0)
返回操作
},{})
console.log(final)
一种非常容易理解的方法是使用一个if-else语句,其中包含三个分支,用于检查键是否同时存在于两个或其中一个原始对象中:
const original={currency1:1234,currency2:2345}
常量toCompare={currency1:123}
常量结果={}
const allKeys=new Set(Object.keys(original).concat(Object.keys(toCompare)))
allKeys.forEach(k=>{
if(原件中的k和副本中的k){
结果[k]=原始[k]-比较[k]
}否则,如果(原件中的k){
结果[k]=原始[k]
}否则{
结果[k]=toCompare[k]
}
})
console.log(结果)