您可以像我在 angularjs 中使用的那样通过笛卡尔积制作此表
$scope.createVariation = function() {
var tagsArr = [];
for (var i = 0; i < $scope.optionsList.length; i++) {
tagsArr[i] = $scope.optionsList[i].tags.split(',');
}
const cartesianProduct = (...arr) => {
return arr.reduce((acc, val) => {
return acc.map(el => {
return val.map(element => {
return el.concat([element]);
});
}).reduce((acc, val) => acc.concat(val), []);
}, [
[]
]);
};
var variationList = [];
if ($scope.optionsList.length == 1) {
variationList = cartesianProduct(tagsArr[0]);
}
if ($scope.optionsList.length == 2) {
variationList = cartesianProduct(tagsArr[0], tagsArr[1]);
}
if ($scope.optionsList.length == 3) {
variationList = cartesianProduct(tagsArr[0], tagsArr[1], tagsArr[2]);
}
$scope.makeVariationTable(variationList);
}
$scope.makeVariationTable = function(variationList) {
$scope.variationListArray = [];
for (var i = 0; i < variationList.length; i++) {
$scope.variationListArray.push({
'variant': variationList[i],
'price': '',
'sku': '',
'barcode':''
});
}
}
其中 $scope.optionsList 是用户定义的选项数组。
$scope.optionsList = [{name:'size',tags:'10,10.5,11,11.5'},{name:'color',tags:'red,blue'}]