reduceは整列コンビネーションを実現します.
1341 ワード
以前には、組み合わせを配置する必要がありました.そして、このリンクを参照して、jsの高次関数
Object.values Object.keys Aray.prototype.reduceについて
reduce
を用いて、不定長の二次元配列の順列結合問題を解決することが分かりました.var data = {
color: ['color1', 'color2', 'color3'],
size: ['size1', 'size2', 'size3'],
style: ['style1', 'style2', 'style3']
}
Object.values(data).reduce( (result, property) => {
return property.reduce( (acc, value) => {
return acc.concat(result.map( ele => [].concat(ele, value)));
}, []);
});
//
var data = {
color: ['color1', 'color2', 'color3'],
size: ['size1', 'size2', 'size3'],
style: ['style1', 'style2', 'style3']
}
//
Object.keys(data).reduce( (result, key) => {
//
return data[key].reduce( (acc, value) => {
//
if (!result.length) {
//
return acc.concat({ [key]: value });
}
// , , 。
return acc.concat( result.map( ele => (Object.assign({}, ele, { [key]: value }) )));
}, []);
}, []);
//
二重ループに相当します.Object.values Object.keys Aray.prototype.reduceについて