Javascript:根据属性计算产品变体的数量
Javascript: Compute the number of product variants based on attributes
我想根据产品的颜色、大小等属性生成所有可能的变体。我试图在javascript中实现profitphp给出的解决方案,但没有得到所需的结果。
下面是我实现的:
var data = [['red', 'blue', 'green'],['small', 'medium', 'large']];
result = generateVariants(data);
console.log(result);
function generateVariants(data,prefix) {
if (typeof prefix === 'undefined') {
prefix = '';
}
var result = [];
var attribute = data.shift();
$.each(attribute, function(key,val) {
if (data instanceof Array && data.length > 0) {
result = result.concat(generateVariants(data, val + ' '));
}
else {
result.push(prefix + val);
}
});
return result;
}
预期结果:
["red small", "red medium", "red large", "blue small", "blue medium", "blue large", "green small", "green medium", "green large"]
相反,我得到这个:
["red small", "red medium", "red large", "blue", "green"]
非常感谢任何帮助。谢谢。
不传递原始数组,而是克隆它并将克隆的数组作为参数传递。
var data = [['red', 'blue', 'green'],['small', 'medium', 'large']];
result = generateVariants(data);
console.log(result);
function generateVariants(data,prefix) {
if (typeof prefix === 'undefined') {
prefix = '';
}
var result = [];
var attribute = data.shift();
$.each(attribute, function(key,val) {
if (data instanceof Array && data.length > 0) {
// Instead of passing the original array, clone it and pass the cloned array as argument.
_data = data.slice(0);
result = result.concat(generateVariants(_data, val + ' '));
}
else {
result.push(prefix + val);
}
});
return result;
}
相关文章:
- 如何在自定义指令中获取计算的属性
- Ember服务在注入组件并在计算属性中使用后是未定义的
- 如何计算一个对象中五个属性中有多少是非null的
- 使用javascript动态计算top属性
- 如何递归地计算它在对象中出现的目标键(属性)的数量
- Ember.js:未在组件'中渲染的模型的计算属性;关于变更的参考
- 升级到Ember 1.0计算属性在视图中不再有效
- ES6非结构化中的计算属性-非结构化整体对象
- 在Ember中,can服务具有计算属性
- Tracker重新计算函数出现异常:无法读取属性'0'的未定义
- 计算数组中多个对象的属性
- Ember.js数组控制器计算属性的复选框
- 在ember.js中访问模型之外的计算属性
- Vue.js在计算属性中设置值
- 如何根据其他属性计算对象文字中的对象属性
- 为特定属性计算JSON对象的长度
- 在JavaScript中作为对象属性计算函数
- Javascript:根据属性计算产品变体的数量
- 使用td属性计算乘积之和
- 对每个调用执行JavaScript属性计算