javascript - 如何在javascript中计算数组值的总和
问题描述
我是编程新手,在 javascript (vue) 中进行数组处理时遇到了麻烦。
这是交易:我有 26 个数组,每个数组有 4 个元素(值:a、b、c、d)。
我必须根据它们的索引对值求和,例如:
{c, d, b, a} = c = 4, d = 3, b = 2, a = 1;
最后我必须有一个包含所有这 26 个对象之和的数组,例如:[a = 104, b = 78, c = 52, d = 26]
我目前拥有的:
Array(26) [ (4) […], (4) […], (4) […], (4) […], (4) […], (4) […], (4) […], (4) […], (4) […], (4) […], … ]
</p>
this.array.forEach(item => {
sum[item.value] = sum[item.value] + (i+1)
});
编辑: 26 个对象数组的对象具有不同顺序的值和描述 {b, a, d, c}, {a,d,b,c}, {a,b,c,d}...索引有“点”(要求和的值),即:第一个索引 = 4 个点,第二个索引 = 3,第三个 = 2,最后一个 = 1我必须对每个单独的值求和并放入一个数组的结果。
所以我的预期结果数组是(例如):
[a = 104, b = 78, c = 52, d = 26]
Edit2:对不起,我一开始不明白你在问什么。我的简化输入数组:
Array(3) [
[
{value: "a", description: "..."},
{value: "b", description: "..."},
{value: "c", description: "..."},
{value: "d", description: "..."}
],
[
{value: "a", description: "..."},
{value: "b", description: "..."},
{value: "c", description: "..."},
{value: "d", description: "..."}
],
[
{value: "a", description: "..."},
{value: "b", description: "..."},
{value: "c", description: "..."},
{value: "d", description: "..."}
]]
我认为这更像是一个逻辑问题,但我坚持这一点。
提前致谢!
解决方案
解释(可能不是很好)这是做什么的:
对于每个内部数组,它获取每个对象并将其转换为像 ['a', 3] 这样的数组,其中 'a' 是对象的值,3 是 4 减去它的索引(因此分数应该是 4, 3 , 2, 1 表示内部数组中的四个位置)。然后将内部数组展平,以便这些新数组在数组中都处于同一级别。这些新数组是通过reduce处理的,以将分数与我们存储在数组中的值相加。
const data = [
[{ value: 'a' }, { value: 'b' }, { value: 'c' }, { value: 'd' }],
[{ value: 'b' }, { value: 'c' }, { value: 'd' }, { value: 'a' }]
];
const res = data
.flatMap( (scores) => scores.map(({ value }, i) => [value, 4 - i]) )
.reduce(
(acc, [key, score]) => Object.assign(acc, { [key]: acc[key] + score }),
{ a: 0, b: 0, c: 0, d: 0 }
);
console.log(res);
推荐阅读
- c# - 在 nunit3 中忽略了测试超时
- python - 在 XML 文件中搜索字符串并在菜单树中打印位置 - Python
- python - 包含编号和名称排序的列表
- vba - VBA最小值和表格
- visual-studio-code - 如何在 Visual Studio 代码中按源列出快捷方式?
- android - 水平 RecyclerView 的 ItemTouchHelper
- javascript - 如何使 EXT JS 模型和代理商店工作?(请帮忙!)
- amazon-web-services - 如何从控制台获取 aws apigateway 中 api 的部署 ID?
- amazon-web-services - 具有 S3 源的 CloudFront 分配以 XML ListBucketResult 响应
- excel - 使用没有日期/时间格式的 Excel VBA 检查时间