如何使用underscorejs将两个数组合并为笛卡尔积二维数组
Underscore.js实现两个数组笛卡尔积解法
你需要实现的是两个数组的笛卡尔积,用Underscore.js可以通过嵌套遍历加展平的方式快速实现,代码如下:
var array1 = [1,2]; var array2 = [1,2]; // 兼容ES5的写法 var result = _.flatten(_.map(array1, function(item1) { return _.map(array2, function(item2) { return [item1, item2]; }); }), false); console.log(result); // 输出 [[1,1],[1,2],[2,1],[2,2]]
如果是支持ES6箭头函数的环境,可以简化为:
const result = _.flatten(_.map(array1, item1 => _.map(array2, item2 => [item1, item2])), false);
逻辑说明
- 第一层
_.map遍历第一个数组的所有元素 - 第二层
_.map遍历第二个数组的所有元素,将两个元素配对为一个小数组返回,此时得到的初始结构为[[[1,1],[1,2]],[[2,1],[2,2]]] - 调用
_.flatten并传入第二个参数false,表示仅展平一层嵌套,就能得到你需要的目标结构
内容的提问来源于stack exchange,提问作者Loran
相关产品推荐
相关产品推荐

