假设我们的商品规格数据为:
let arr = [ { name: '材质', value: ['花岗岩','玄武岩'], }, { name: '体积', value: ['10克'], }, { name: '颜色', value: ['白色'], }, ];
我们想要的最终数据:
[['花岗岩', '10克', '白色'],['玄武岩', '10克', '白色']]
实现代码:
function combineSpecs(specs) { if (specs.length === 0) { return [ [] ]; } else { const [head, ...tail] = specs; const rest = this.combineSpecs(tail); const pairs = head.value.map(value => rest.map(r => [value, ...r])); return [].concat(...pairs); } }; let arr = [ { name: '材质', value: ['花岗岩','玄武岩'], }, { name: '体积', value: ['10克'], }, { name: '颜色', value: ['白色'], }, ]; let arr2 = this.combineSpecs(arr); console.log('最终结果',arr2);
关键就是这个combineSpecs函数,它把数组里面的所有值进行了组合,才得出我们想要的结果。
注:本文参考于http://t.csdn.cn/icq72