[英]lodash: Array of Objects
我有一个像这样的对象的node.js数组-
[
{ sid: 1095, a: 484, b: 'someval1' },
{ sid: 1096, a: 746, b: 'someval5' },
{ sid: 1097, a: 658, b: 'someval7' },
{ sid: 1098, a: 194, b: 'someval3' }
]
a)是否可以基于sid 在原位更新和删除数组成员,并且不会降低性能?
b)如果我需要对数组进行分块并针对该分块触发异步代码(例如,一次插入100个记录到一个DB中),异步将如何与lodash的同步代码融合?
指针表示赞赏。
a)有两种方法可以做到这一点。 首先,您可以使用var newArr = _.keyBy(arr, 'sid');
实例化对象var newArr = _.keyBy(arr, 'sid');
。 然后,您可以引用要直接编辑的项目newArr[sid].a = 494
。 另一种选择是使用_.indexOf
和_.find
的组合,因此var index = _.indexOf(arr, _.find(arr, { sid: sid }));
然后使用index
arr[index].a = 494
对其进行编辑
b)lodash有一个方法_.chunk
。 所以
var chunked = _.chunk(arr, 100);
var promises = chunked.map(item => db.bulkInsert(item));
Promise.all(promises)
.then(result => {
// Do whatever else you want
});
我希望这是有帮助的。 在b)上,在不知道您如何处理数据库操作(使用ORM,手动构建查询等)的情况下,给出具体建议有些困难。 但是,基本思想(假设您正在使用的是Promise)应该是要生成一个表示每个批量插入内容的Promise数组。 解决所有问题后,再执行一些操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.