Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.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_Reactjs - Fatal编程技术网

Javascript 通过索引将对象之间的值相乘

Javascript 通过索引将对象之间的值相乘,javascript,reactjs,Javascript,Reactjs,我被卡住了,我有两个目标 对象1 29: {value: 29, price: "145"} 30: {value: 30, price: "160"} 对象2 29: {value: 29, count: 2} 30: {value: 30, count: 3} 我尝试将价格乘以同一索引中的计数,我尝试使用Object.assing将对象1的值复制到对象2,然后将同一对象中的值相乘,但我没有运气 我试图只保留一个包含两个元素之和的元素,我相信有更好的(更具声明性的)方法可以做到这一点,但我

我被卡住了,我有两个目标

对象1

29: {value: 29, price: "145"}
30: {value: 30, price: "160"}
对象2

29: {value: 29, count: 2}
30: {value: 30, count: 3}
我尝试将价格乘以同一索引中的计数,我尝试使用Object.assing将对象1的值复制到对象2,然后将同一对象中的值相乘,但我没有运气

我试图只保留一个包含两个元素之和的元素,我相信有更好的(更具声明性的)方法可以做到这一点,但我想这就是我想到的。 (注:名称
object1
object2
有点误导,它们都是对象数组)


我解决了我的问题,我将对象存储在一个数组中,然后对其进行映射,然后执行Reduce()以返回数组的唯一值

  let object1 = [
  {value: 29, price: 145},
  {value: 30, price: 160}
  ]

  let object2 = [
  {value: 29, count: 2},
  {value: 30, count: 3}
  ]

  var objResult1 = []

  {object1.map(price => {
      objResult1.push(price.price);
  })}

  var objResult2 = []

  {object2.map(count => {
    objResult2.push(count.count);
  })}

  var final = (objResult1.reduce(function(r,a,i){return r+a*objResult2[i]},0));

使用
x*1=x
的数学公式:

constprices=[{value:29,price:145},{value:30,price:160}]
const counts=[{value:29,count:2},{value:30,count:3}]
const totalsObj=[…价格,…计数]。减少(
(acc,{value:k,price=1,count=1})=>({
…acc[k]:acc[k]| 1*价格*计数
}), {}
)
const totalsArr=Object.entries(totalsObj.map)(
([k,v])=>({value:k,total:v})
)
console.log(totalsObj)

console.log(totalsArr)
您能分享您尝试过或使用过的代码吗?这将帮助我和其他人更轻松地回答您的问题请添加您的预期结果
let object1 = [
    {value: 29, price: 145},
    {value: 30, price: 160}
]

let object2 = [
    {value: 29, count: 2},
    {value: 30, count: 3}
]

console.log(getTotals(object1, object2));
// Will return
// [{ value: 29, total: 290 }, { value: 30, total: 480 }]
  let object1 = [
  {value: 29, price: 145},
  {value: 30, price: 160}
  ]

  let object2 = [
  {value: 29, count: 2},
  {value: 30, count: 3}
  ]

  var objResult1 = []

  {object1.map(price => {
      objResult1.push(price.price);
  })}

  var objResult2 = []

  {object2.map(count => {
    objResult2.push(count.count);
  })}

  var final = (objResult1.reduce(function(r,a,i){return r+a*objResult2[i]},0));