Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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 - Fatal编程技术网

Javascript 用具有相同键的另一个对象替换对象数组中的键值

Javascript 用具有相同键的另一个对象替换对象数组中的键值,javascript,Javascript,假设我有一个对象数组: const purchaseDetails = [ { amount: '4567', purchaseOrder: 'B234', purchaseDate: '10/12/2020', someRandom1: '123', someRandom2: '345' }, { amount: '4567', purchaseOrder: 'B234', purc

假设我有一个对象数组:

const purchaseDetails = [
  {
      amount: '4567',
      purchaseOrder: 'B234',
      purchaseDate: '10/12/2020',
      someRandom1: '123',
      someRandom2: '345'
   },
   {
      amount: '4567',
      purchaseOrder: 'B234',
      purchaseDate: '10/12/2020',
      someRandom1: '678',
      someRandom2: '987'
    }
]
另一个对象为:

const toReplace = {
      amount: '1211',
      purchaseOrder: 'A123',
      purchaseDate: '12/30/2020',
      vat: '123',
 }
我想用toReplace值替换purchaseDetails的值

O/p as:

const purchaseDetails = [
    {
         amount: '1211',
         purchaseOrder: 'A123',
         purchaseDate: '12/30/2020',
         vat: '123',
         someRandom1: '123',
         someRandom2: '345'
     },
     {
         amount: '1211',
         purchaseOrder: 'A123',
         purchaseDate: '12/30/2020',
         vat: '123',
         someRandom1: '678',
         someRandom2: '987'
      }
  ]
为此,我尝试:

purchaseDetails.forEach(element => {
  element.amount=toReplace.amount,element.purchaseOrder=toReplace.purchaseOrder,
   element.purchaseDate=toReplace.purchaseDate,element.tax=toReplace.tax
});
但它并不能取代值…我也尝试过使用单个值,但它不起作用

根据提供的解决方案,这是分配问题

但当我尝试时,提供了第二种解决方案:

purchaseDetails.forEach(element => {
        element = {...element, ...avacado}
        console.log(element)
});

在console.log(element)上,它显示值已更改的元素,但console.log(purchaseDetails)值未更改。

如果您改为通过
let
声明
purchaseDetails
(从而允许以后重新分配
map
调用的结果),则可以使用
Array.prototype.map

let purchaseDetails=[{
金额:'4567',
采购订单:“B234”,
购买日期:“2020年12月10日”,
第1条:“123”,
第二条:“345”
},
{
金额:'4567',
采购订单:“B234”,
购买日期:“2020年12月10日”,
第1部分:“678”,
第二条:“987”
}
]
常数重置={
金额:'1211',
采购订单:“A123”,
购买日期:2020年12月30日,
增值税:'123',
}
purchaseDetails=purchaseDetails.map(obj=>({…obj,…toReplace}));

console.log(purchaseDetails)
==
用于比较。使用
=
进行作业。您应该能够执行
element={…element,…toReplace}
。谢谢..=分配是个问题,但是您的第二个解决方案看起来好多了,但尽管我在下面尝试,但它不起作用。请你给我引路好吗?forEach(element=>{element={…element,…toReplace});但它不起作用……我有什么不对劲吗?是的,对不起,这在这里不起作用。但是,您可以执行
Object.assign(元素,toReplace)取而代之。非常感谢您的帮助……请您在回答部分提供,这样我就可以接受了。