const skuKeyList = [
{
skuKeyNo: '尺码1的keyno',
skuKeyDesc: '尺寸',
skuValueList: [
{
skuValueNo: 'aaa',
skuValueDesc: 's'
},
{
skuValueNo: 'bbb',
skuValueDesc: 'm'
}
]
},
{
skuKeyNo: '颜色1的keyno',
skuKeyDesc: '颜色',
skuValueList: [
{
skuValueNo: 'ccc',
skuValueDesc: 'red'
},
{
skuValueNo: 'ddd',
skuValueDesc: 'blue'
}
]
},
{
skuKeyNo: '测试1的keyno',
skuKeyDesc: '测试',
skuValueList: [
{
skuValueNo: 'SV03b988eb730e1000',
skuValueDesc: 'qq'
},
{
skuValueNo: 'SV03b988eddc4e1000',
skuValueDesc: 'ww'
}
]
}
]
function combination(arr){
if(!Array.isArray(arr)){
return
}
let newObject = {}
for(item of arr){
if( !newObject.hasOwnProperty(item.skuKeyNo)){
newObject[item.skuKeyNo] = item.skuValueList.map(i=>{return i.skuValueNo})
}
}
return Object.keys(newObject).reduce( (result, key) => {
return newObject[key].reduce( (acc, value) => {
if (!result.length) {
// 将数值转化为对象格式
return acc.concat({ [key]: value });
}
return acc.concat( result.map( ele => (Object.assign({}, ele, { [key]: value }) )));
}, []);
}, []);
}
console.log(combination(skuKeyList))
console