Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 减去相同的对象值_Javascript_Node.js_Eslint Config Airbnb - Fatal编程技术网

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);