javascript - 将数组的多个项目映射到单个对象/函数

标签 javascript arrays node.js

考虑以下数组:

['123', '456', '789', '000', '111', '222', '333', '444', '555']

现在,假设我想将每 3 个项目映射到一个函数。

也就是说,123456789 将映射到 function () { ... }

下一个 000111222 将映射到另一个 function () { ... }

我想这样做是因为我需要对数据库执行批量请求,但我可以请求的最大 ID 数量是每批 25 个。

所以我的目标是将每 25 个项目映射到一个函数(将执行批量请求),然后使用 async.parallel 并行执行每个函数。

问题是我无法使用 mapasync.map 因为这会映射数组上的每个项目。我打算做的是将每 25 个连续项目映射到一个对象/函数。

这可能吗?

我正在寻找任何 JavaScript 或 NodeJS 解决方案。

最佳答案

与 Node.js 不完全相关,但这里有一个可能的解决方案:

var funcs = [a, b, c, ...], // the list of functions
    arr = [], // your data
    items = 25,
    mapOfFuncs = [];

for(var i = 0, len = arr.length, f; i < len; i++){
    f = funcs[Math.floor(i / items)];
    mapOfFuncs.push(f);
}

根据观察,每 24 个连续数字除以 25 并进行取整后,将产生相当于相应函数索引的某个数字。

它将产生一个数组mapOfFuncs,其中包含与arr的元素相对应的函数。例如,对于 arr = ['123', '456', '789', '000', '111', '222', '333', '444', '555']items = 3,输出将为:[a, a, a, b, b, b, c, c, c]

关于javascript - 将数组的多个项目映射到单个对象/函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34903360/

相关文章:

javascript - 使所有文件都可以访问 winston logger 变量

javascript - 如何将 ERC20 代币发送到智能合约余额?

javascript - 谷歌地图缩放功能不起作用

php - 合并 MySQL 结果中的多个产品属性

c++ - 使用 std::swap 交换二维数组中的行。它是如何工作的?

javascript - Array.Push覆盖之前的Value Node Js

javascript - 我如何像在 jQuery 中那样在 YUI 中显示/隐藏元素?

javascript - 如何在scss中使用if else条件

javascript - jQuery - 如果 array.filter 失败则显示消息?

node.js - Windows服务器(iis)上的主机 Node js