【发布时间】:2016-11-28 21:14:47
【问题描述】:
我一直在研究单个元素和对象数组的笛卡尔积。对于单个数组元素,我已经理解了解决方案,但对于我难以实现的对象数组。 例如输入
cartesianProductOf([{col1:'A'}], [{col2:'B'},{col3:'C'}])
输出:
[{col1:'A',col2:'B'},{col1:'A',col3:'C'}]
这是我正在处理的功能
function cartesianProductOf() {
return Array.prototype.reduce.call(arguments, function(a, b) {
var ret = [];
debugger;
a.forEach(function(a) {
b.forEach(function(b) {
var r = a.concat([b])
ret.push(r);
});
});
return ret;
}, [[]]);
}
这个函数返回这个结果
[{col1:'A'},{col2:'B'}],[{col1:'A'},{col3:'C'}]
需要指导。
【问题讨论】:
-
你有理由需要使用reduce吗?
-
我相信这里真正的笛卡尔积实际上是
{{col1:'A'},{col2:'B'}},{{col1:'A'},{col3:'C'}}。但是,这不是一个有效的 javascript 构造,因为 javascript 对象必须是名称-值对。
标签: javascript arrays cartesian-product