属性名をそのままにして、N個の属性のリストに基づいて完全なバリアントセットを生成する必要があります。javascriptのオブジェクトのデカルト積
配列のデカルト積の周りには多くのアルゴリズムがありますが、キーを保持するオブジェクトのためのアルゴリズムはたくさんあります。
パフォーマンスは大きな問題ではありません。各属性には12以上の値がありません。順序は正確にexpected
と一致する必要はありません。
は私がリストのための標準的なアルゴリズムに基づいて、最初の試みを行ってきましたが、私は苦労している:あなたは「『i』はグローバルVaRの問題である」を取り除くたら
function cartesianProduct(input, current) {
if (!input || input.length < 1) {
return [];
}
var head = input[0];
var tail = input.slice(1);
var output = [];
for (var key in head) {
for (var i = 0; i < head[key].length; i++) {
if (typeof current == 'undefined') {
var current = {};
}
current[key] = head[key][i];
var productOfTail = cartesianProduct(tail, current);
output.push(current);
console.log(current);
}
}
return output;
}
console.log(cartesianProduct(input));
(http://stackoverflow.com/questions/12303989/cartesian-product-of-multiple-arrays-in [同様の質問がここに頼まれました] -javascript) – Keithamus
あなたのコードには大きな問題があります。私はvarとして宣言しないので、グローバル変数とみなされ、したがって変更されますdは内部関数呼び出しで... – GameAlchemist