【问题标题】:Sum object values对对象值求和
【发布时间】:2020-12-29 19:20:34
【问题描述】:

我正在尝试对对象数据中键“值”的值求和。 谷歌搜索了很多,但无法弄清楚这一点。 我的猜测是我没有从 localStorage 中检索值。 编辑:我想将总和值保存到 localStorage...

var storage = localStorage.getItem("Bills");
if (storage !== null) {
  var data = JSON.parse(storage);
  loadData(data);
  var id = data.length;
} else {
  id = 0;
  data = [];
};

function loadData(array) {
  array.forEach(function(bill) {
    newItem(bill.name, bill.value, bill.id, bill.payed);
  });
};

function addBill() {
  modal.style.display = "none";
  var bill = document.getElementById("billName").value;
  var billVal = document.getElementById("billValue").value;
  newItem(bill, billVal, id, false);
  data.push({
    name: bill,
    value: billVal,
    id: id,
    payed: false
  });
  billsTotals.innerHTML = Object.values(data).reduce((t, { value }) => t + value, 0); // ?????
  localStorage.setItem("Bills", JSON.stringify(data));
};

function newItem(name, value, id, payed) {
  if (payed == true) {
    return;
  }
  
  var ul = document.getElementById("list");
  var li = document.createElement("li");
  li.appendChild(document.createTextNode(name + " " + value + "kr"));
  li.setAttribute("id", id);
  ul.appendChild(li);
  bill = document.getElementById("billName").value = "";
  billVal = document.getElementById("billValue").value = "";
};

我尝试在 reduce 之前添加 .values 但没有任何效果:

billsTotals.innerHTML = Object.values(data.value).reduce((t, {value}) => t + value, 0); // ?????

【问题讨论】:

  • 我们需要更多信息/代码来帮助解决这个问题。你能用代码片段举一个完整的例子吗?或者至少告诉我们newItem 的作用,data 的外观以及它的格式/添加方式。
  • 如果数据初始化正确,您的 reduce 函数可以正常工作:jsfiddle.net/qxhtLyob/1

标签: javascript object reduce


【解决方案1】:

不确定您的数据变量。但是数据变量是一个数组,那么你可以这样做。

data.reduce((total,{value})=>{
return total +value
},0)

【讨论】:

  • 这也可以,OP 只是用短写来写单行。
  • 这只是将值一个接一个地添加......而不是对它们求和。 :(
猜你喜欢
  • 2019-09-17
  • 2020-10-14
  • 2021-08-09
  • 2013-05-03
  • 2018-04-23
  • 2021-12-23
  • 2023-02-02
  • 2016-11-27
  • 2013-01-03
相关资源
最近更新 更多