<template>
	....
</template>
<script>
export default {
	data() {
		return {}
	},
	created() {
		const attributes = [
			{
				name: '颜色',
				values: ['红色', '蓝色', '黑色']
			},
			{
				name: '尺寸',
				values: ['S', 'M', 'L']
			},
			{
				name: '大小',
				values: ['16G', '32G', '64G', '128G']
			}
		]
		const skus = []
		const attributeValues = attributes.map(attribute => attribute.values)
		console.log("attributeValues", attributeValues)
		console.log("skus", skus)

		// 生成所有SKU组合
		const combinations = this.getCombinations(attributeValues)
		console.log("combinations", combinations)

		const skuList = combinations.map(combination => {
			const sku = skus.find(sku => this.isEqual(sku.attributes, combination))
			return {
				attributes: combination,
				price: sku ? sku.price : 0,
				stock: sku ? sku.stock : 0
			}
		})

		console.log("skuList", skuList)
	},
	methods:{
		isEqual(obj1, obj2) {
			const keys1 = Object.keys(obj1)
			const keys2 = Object.keys(obj2)
			if (keys1.length !== keys2.length) {
				return false
			}
			for (let key of keys1) {
				if (obj1[key] !== obj2[key]) {
					return false
				}
			}
			return true
		},
		getCombinations(arrays) {
			const result = [[]]
			for (let i = 0; i < arrays.length; i++) {
				const temp = []
				for (let j = 0; j < result.length; j++) {
					for (let k = 0; k < arrays[i].length; k++) {
						temp.push([...result[j], arrays[i][k]])
					}
				}
				result.splice(0, result.length, ...temp)
			}
			return result
		}
	}
}
</script>