Javascript 在node.js中的for-in循环中替换项或从Arraylist更新它

Javascript 在node.js中的for-in循环中替换项或从Arraylist更新它,javascript,arrays,node.js,Javascript,Arrays,Node.js,假设我有一个对象数组,类似于: {'field1':value1,'fiedl2':value2,'field3':value3} {'field1':value4,'fiedl2':value6,'field3':value1} 我想改变数组中的每个对象,所以 for(let item of items){ //update item so it does not contain the old values but new calculated ones, so item.fi

假设我有一个对象数组,类似于:

{'field1':value1,'fiedl2':value2,'field3':value3}

{'field1':value4,'fiedl2':value6,'field3':value1}

我想改变数组中的每个对象,所以

for(let item of items){
   //update item so it does not contain the old values but new calculated ones, so
   item.fieldA=item.field1+item.field2;
   item.fieldB=item.field3
}
最后,我的数组应该有如下对象:

{'fieldA':valueA, 'fieldB':valueB}

我正在使用node,我正在尝试查看如何使用新属性和值简单地更新或替换每个对象的更新版本

可能值得考虑创建一个新数组:

items=items.map(before=>({
 fieldA:before.value1+before.value2,
 fieldB:before.value3
}));
或ES6之前:

items=items.map(function(before){
 return {
    fieldA:before.value1+before.value2,
     fieldB:before.value3
 };
 }));
通过这种方式,可以收集原始项目(可能比删除所有未使用的属性更容易),并且语法非常好

使用对象分解可能很有用:

items=items.map(
  ({value,value2,unused,...rest})
  =>
  ({result:value+value2,...rest})
);

上面的代码删除未使用的项,并用存储的加法替换value和value2。结果,所有其他参数也被复制。

您只是缺少了一个delete item.field1,您完成了……什么是
item.value1
,您的意思是
item.field1
?你的对象数组在哪里,我只看到一个对象?@James的确,你是对的,我编辑过。@alin你缺少一个返回值{…}。如果箭头函数中的括号用()括起来,那么它们就不再是块语句,而是一个对象文字。非常感谢,我是js新手,错过了它。的确,现在它起作用了@(不客气我承认这很令人困惑,我喜欢使用ES6之前的函数,因为我熟悉java,这使得来回移动更加容易。也许有一天我将不得不进入
=>
。@alin java专注于可读性,而js专注于快速组合一些内容,如果其他人需要阅读,我通常更喜欢旧的函数语法;)