JavaScript 动态创建和填充数组

标签 javascript arrays sorting dynamic

我正在尝试根据另一个数组的属性动态创建数组变量。示例数据:

var arr = [{category: 'bill', date: '2017/04/29', total: 35049.48999999998},
{category: 'bill', date: '2017/05/12', total: 249.03},
{category: 'bill', date: '2017/11/05', total: 568.5499999999998},
{category: 'electrical appliance', date: '2017/08/09', total: 3930.76},
{category: 'electrical appliance', date: '2017/03/28', total: 532.1},
{category: 'food', date: '2017/08/09', total: 639.05},
{category: 'food', date: '2017/08/31', total: 2653.05}];

我想要实现的是,我想为每个类别创建一个数组,然后将动态创建的数组作为参数传递给另一个函数。

我这样做的原因是因为我想计算上周和本周每个类别的支出总额,并将它们显示在不同的部分。

例如,本周食品支出为 639.05,上周食品支出为 2653.05。本周电器消费3930.76等

我真正不确定的是如何将类别分组为一个临时变量,然后将临时变量传递给另一个函数以供我计算本周/上周的支出。

我已经有一个函数来计算本周/上周的支出并且它运行良好,该函数的参数是一个数组,在这种情况下,我试图将类别组合在一起然后单独传递它而不是只需传递包含所有类别的数组即可执行计算。

我怎样才能真正做到这一点?谢谢!

最佳答案

您可以使用对象进行分组和迭代组,您可以获取对象的键并迭代它们。

var array = [{ category: 'bill', date: '2017/04/29', total: 35049.48999999998 }, { category: 'bill', date: '2017/05/12', total: 249.03 }, { category: 'bill', date: '2017/11/05', total: 568.5499999999998 }, { category: 'electrical appliance', date: '2017/08/09', total: 3930.76 }, { category: 'electrical appliance', date: '2017/03/28', total: 532.1 }, { category: 'food', date: '2017/08/09', total: 639.05 }, { category: 'food', date: '2017/08/31', total: 2653.05 }],
    groups = Object.create(null);

array.forEach(function (o) {
    groups[o.category] = groups[o.category] || [];
    groups[o.category].push(o);
});

console.log(groups.food); // just food
console.log(groups);

// iterate keys of groups and some values
Object.keys(groups).forEach(function (k) {
    groups[k].forEach(function (o) {
        console.log(k, o.date);
    });
});
.as-console-wrapper { max-height: 100% !important; top: 0; }

要访问单个已知类别,您可以使用 property accessor , 喜欢

groups.food                    // dot notation
groups['electrical appliance'] // bracket notation

关于JavaScript 动态创建和填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46129336/

相关文章:

ios - 在 UITableView 中从 [(key : String, value: [[String : Any]])] 分配键和值

java - TreeMap 排序不正确

javascript - 减少多个相似的 if/else 语句 - javascript

javascript - 如何动态生成下拉菜单

javascript - jQuery 每个只返回最后一个元素,Google 图表 API

c - 对数组进行排序会将值替换为零

python - 如何在 python 中更改 glob 模块的内部排序系统

javascript - VueJS - 动态重复组件

python - future 警告 : Using a non-tuple sequence for multidimensional indexing is deprecated use `arr[tuple(seq)]` instead of `arr[seq]`

python - 为什么 numpy.count_nonzero(arr) 不能使用指定的轴值?