我需要编写一个包含两个参数的函数,第一个参数是
例子:
<ul>
<li>oreos<li/>
<li>milk<li/>
<ul/>
let products = {
oreos: 20,
milk: 17,
bread: 12,
doritos: 10
}
我尝试使用for in/of循环来遍历产品对象,并将其与
相匹配。
循环使用li元素,使用它们的innerText作为查找价格的关键,对它们进行求和,你就好了:
let total = 0;
document.querySelectorAll('li').forEach(item => {
total += products[item.innerText];
});
还有其他形式,您可以添加一些内容(比如首先检查产品数组中是否存在该项),但这是基本思想。
你的函数可能是这样的:
我使用了数组。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>
您可以做的是,您可以使用以下功能:
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浏览器的方法)