Javascript 减去相同的对象值
减法或加法的最佳方法是什么来自相同的物体Javascript 减去相同的对象值,javascript,node.js,eslint-config-airbnb,Javascript,Node.js,Eslint Config Airbnb,减法或加法的最佳方法是什么来自相同的物体 const obj1 = { 1: 10, 2: 10, 3: 10, 4: 10, }; const obj2 = { 1: 30, 2: 30, 3: 30, 4: 30, }; const result = obj2 - obj1; console.log(result); /* the expected output is: { 1:20, 2: 20, 3: 20,
const obj1 = {
1: 10,
2: 10,
3: 10,
4: 10,
};
const obj2 = {
1: 30,
2: 30,
3: 30,
4: 30,
};
const result = obj2 - obj1;
console.log(result);
/* the expected output is:
{
1:20,
2: 20,
3: 20,
4: 20,
};
*/
ESLint指出,使用for-in可以添加值这不是一个好的实践,日志是针对in的:for-in的主体应该封装在if语句中,以从原型中过滤不需要的属性。
在中使用for时,我也会遇到返回不需要的值的问题使用对象数组时与$init:0类似。
常数obj1={
1: 10,
2: 10,
3: 10,
4: 10,
};
常数obj2={
1: 30,
2: 30,
3: 30,
4: 30,
};
常数差=obj1,obj2=>{
const result=Object.assign{},obj1;
Object.keysresult.forEachkey=>{
结果[键]-=obj2[键];
};
返回结果;
}
const result=diffobj2,obj1;
console.logresult 您可以跳过,这将提供对象自己的属性名称,并且不会从原型链中找到键
常数obj1={
1: 10,
2: 10,
3: 10,
4: 10,
};
常数obj2={
1: 30,
2: 30,
3: 30,
4: 30,
};
const obj3=Object.keysobj2
.reduceacc,curr=>acc[curr]=obj2[curr]-obj1[curr],acc,{};
console.logobj3 ESLint的警告意味着,在中,您还将迭代对象的原型链上的属性,而不仅仅是对象拥有的属性 您可以使用Object.entries(仅访问拥有的属性)和Object.fromEntries来生成结果: 常量obj1={1:10,2:10,3:10,4:10}; 常量obj2={1:30,2:30,3:30,4:30}; const obj3=Object.fromEntries Object.entriesobj2.map[k,v]=>[k,v-obj1[k]] ;
console.logobj3;ESLint并不是很好的实践,你的意思是什么?$init那么,你使用的是什么库/框架向你的对象添加属性呢?ESLint没有那么好的做法你是什么意思?对不起,我会解决这个问题。。。如果ESLint因为一条规则而抱怨obj2.hasOwnProperty,那么可以执行Object.prototype.hasOwnProperty.callobj2,p
for (const p in obj2) {
newObj[p] = obj2[p] - obj1[p];
}
console.log(newObj);