当前位置: 首页 > 知识库问答 >
问题:

如何计算和添加对象中关键点的值

贾实
2023-03-14

我需要编写一个包含两个参数的函数,第一个参数是

例子:

<ul>
    <li>oreos<li/>
    <li>milk<li/>
<ul/>
let products = {
    oreos: 20,
    milk:  17,
    bread: 12,
    doritos: 10
}

我尝试使用for in/of循环来遍历产品对象,并将其与相匹配。


共有3个答案

苍阳成
2023-03-14

循环使用li元素,使用它们的innerText作为查找价格的关键,对它们进行求和,你就好了:

let total = 0;
document.querySelectorAll('li').forEach(item => {
  total += products[item.innerText];
});

还有其他形式,您可以添加一些内容(比如首先检查产品数组中是否存在该项),但这是基本思想。

常炯
2023-03-14

你的函数可能是这样的:

  1. 迭代所有列表项
  2. 获取项目的文本内容
  3. 使用文本内容作为键在products对象中查找价格
  4. 添加到总数中
  5. 返回总数

我使用了数组。from()数组。原型reduce()一次完成这一切。当然,您需要一个独特的类,或者更好的列表ID,而不是简单地选择页面上的所有列表项。

let products = {
    oreos: 20,
    milk:  17,
    bread: 12,
    doritos: 10
}

function getTotal(listElements, productPrices) {
  var total = Array.from(listElements).reduce(function(total, listItem) {
    total += productPrices[listItem.textContent] || 0;
    return total;
  }, 0);
  return total;
}

console.log(getTotal(document.querySelectorAll('li'), products));
<ul>
    <li>oreos</li>
    <li>milk</li>
</ul>
宗增
2023-03-14

您可以做的是,您可以使用以下功能:

let totalPrice = (priceList, products) => {
return products.reduce((total, elem) => {
    total += priceList[elem.innerText];
    return total;
}, 0)

}

此函数使用Array.reduce迭代产品列表,并添加产品价格列表并返回总数。

您应该签出数组。reduce()更清晰。

 类似资料:
  • 问题内容: 这是我的对象文字: 我如何添加字段与对象? 问题答案: 有两种向对象添加新 属性的 方法: 使用点表示法: 使用方括号表示法: 当您知道属性名称时,将使用第一种形式。动态确定属性名称时,使用第二种形式。像这个例子: 甲 真实 JavaScript数组可使用任一构造: 数组文字符号: 数组构造器符号:

  • 我有下面的对象数组,其中存储了计划编号 这是我需要的预期输出: 下面是对象的adjustedAmount数组,我使用它来计算每个值的和: 用于计算每个值之和的代码,但它不比较计划编号 最后合并对象数组 我如何比较计划编号并插入initialObj?

  • 我想根据属性“amount”(空字符串)将对象分成两部分 } 对此 我即将解决它,但经过多次尝试(推送、分配、映射),它仍然不起作用。谢谢。

  • 问题内容: 我有以下JSON数组,我想创建对象表单状态键计数 要计算状态键值并创建以下对象 问题答案: 使用 方法 虽然可以使用 具有相同代码的方法。

  • 问题内容: 这是我的JSON: 如何计算其中的对象数量? 问题答案: 那是一个数组。 您可以解析它(),然后使用该属性。

  • 问题内容: 计算对象的键/属性数量的最快方法是什么?是否可以在不迭代对象的情况下执行此操作?即不做 (Firefox确实提供了一个魔术属性,但是在版本4的某个位置将其删除。) 问题答案: 要在任何与 ES5兼容的环境 (例如Node,Chrome,IE 9+,Firefox 4+或Safari 5+)中执行此操作: 浏览器兼容性 Object.keys文档(包括可以添加到非ES5浏览器的方法)