通过比较另一个数组中的值在 JavaScript 中创建数组
Creating arrays in JavaScript by comparing values in another array
在JavaScript中,我正在尝试根据另一个数组的值创建数组,但我遇到了困难。
我有一个字符串格式的日期数组(日期),例如
["30/09/2015", "31/10/2015", "30/11/2015", "31/12/2015"]
我有一个对象来表示多个银行账户(balancesSortByAccId),例如
Cash - (Array size: 3)
id: 1, date: "30/09/2015", balance: 30
id: 2, date: "31/10/2015", balance: 50
id: 3, date: "30/11/2015", balance: 100
Natwest - (Array size: 2)
id: 4, date: "30/11/2015", balance: 400
id: 5, date: "31/12/2015", balance: 200
在循环遍历balancesSortByAccId中的所有帐户时,我希望能够为日期数组中每个日期的余额创建一个数组,即
[30, 50, 100, null]
[null, null, 400, 200]
我怎样才能做到这一点?
更新:jsfiddle 代码 - https://jsfiddle.net/gx8bLehb/
最简单的方法是将cash
数组和natwest
数组转换为按日期排序的哈希,如下所示 balancesByDate
:
var balancesByDate = _.groupBy(cash, function(entry) {return entry.date});
然后使用数组map()
函数,例如从 lodash 迭代dates
数组,并为每个日期查找balancesByDate
哈希中的帐户行。从该行中,返回 map
函数中的 balance
属性。
dates.forEach(function(date){
if (balancesByDate[date]) {
results.push(_.map(balancesByDate[date], function(line){
return line.balance;
}));
} else {
results.push(null);
}
});
但是,您需要注意,您的数据集很可能包含一天的重复余额,您应该为此做好计划(我的代码每天返回一个数组)。
https://jsfiddle.net/hdpuuc5d/1/
纯
JavaScript中的解决方案,带有日期的辅助对象:
var dates = ["30/09/2015", "31/10/2015", "30/11/2015", "31/12/2015"],
datesObj = dates.reduce(function (r, a, i) { r[a] = i; return r; }, {}),
balances = {
Cash: [
{ id: 1, date: "30/09/2015", balance: 30 },
{ id: 2, date: "31/10/2015", balance: 50 },
{ id: 3, date: "30/11/2015", balance: 100 }
],
Natwest: [
{ id: 4, date: "30/11/2015", balance: 400 },
{ id: 5, date: "31/12/2015", balance: 200 }
]
},
result = {};
Object.keys(balances).forEach(function (k) {
result[k] = Array.apply(null, { length: dates.length }).map(function () { return null; });
balances[k].forEach(function (a) {
result[k][datesObj[a.date]] = a.balance;
});
});
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
相关文章:
- 如何遍历包含对象的数组-javascript
- 保存数组javascript
- 查找数组javascript中包含的元素类型
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 从多维数组javascript中提取特定值
- 如何在数组javascript中选择伪随机值
- 拆分字符串数组(JavaScript)后未定义
- 从数组JavaScript中删除并返回最后n个项的最快方法
- 使用条件for循环更新数组-Javascript
- 从数组javascript创建新对象
- 用数组(javascript)中的值替换regex捕获
- 从数组[Javascript]的总长度中减去一个干净的数字
- 将一个字符串数组解析为一个新的数组javascript
- 如何将对象转换为对象数组javascript
- 赢得't循环数组javascript
- 从不同的数组 JavaScript 中获取值
- 多维数组 JAVASCRIPT 出了点问题
- 可以't分配给一个对象数组javascript
- 比较数组JavaScript中的对象
- 如何完成缺少(连续)元素的数组|Javascript