Arrays 基于数组元素的连接
我用 问题是,我有很多数组,它们的元素是数组, 比如说Arrays 基于数组元素的连接,arrays,node.js,underscore.js,Arrays,Node.js,Underscore.js,我用 问题是,我有很多数组,它们的元素是数组, 比如说 array1 = [[1,2],[1,3],[4,5]] array2 = [[2],[4,6]] 问题是我想通过元素连接数组,如下所示 array3 = array1 join array2 array3 = [[1,2],[1,3,4,6],[4,5]] 是否有任何优雅的方式可以使用下划线进行基于元素的连接。您正在寻找的join=zipWith-concat:-) 用下划线,你可以写 array3 = _.map(_.zip(arr
array1 = [[1,2],[1,3],[4,5]]
array2 = [[2],[4,6]]
问题是我想通过元素连接数组,如下所示
array3 = array1 join array2
array3 = [[1,2],[1,3,4,6],[4,5]]
是否有任何优雅的方式可以使用下划线进行基于元素的连接。您正在寻找的
join=zipWith-concat
:-)
用下划线,你可以写
array3 = _.map(_.zip(array1, array2), function(els) {
return _.flatten(_.compact(els), true)
// or just: els[0].concat(els[1] || []);
});
逐步解释:
console.log(_.zip(array1, array2));
/*[ [ [ 1, 2 ], [ 2 ] ],
[ [ 1, 3 ], [ 4, 6 ] ],
[ [ 4, 5 ], undefined ] ]*/
我们在列表中的每个项目上应用\uq.uniq(q.flant(q.compact(item),true))
[1,2],[2]
将变成[1,2,2]
[1,2]
_.map(_.zip(array1, array2), _.compose(_.uniq, _.flatten, _.compact));
// [ [ 1, 2 ], [ 1, 3, 4, 6 ], [ 4, 5 ] ]
您可以使用
partial
:使用.partial(u.flatte,uu,true)
作为迭代器将其缩短一点。@AaronDufour:我知道,但我认为这可能太让人困惑了|编辑:而且它不起作用:-(
_.map(_.zip(array1, array2), _.compose(_.uniq, _.flatten, _.compact));
// [ [ 1, 2 ], [ 1, 3, 4, 6 ], [ 4, 5 ] ]