Javascript 如何在js中生成以下内容的组合
我看到了与此类似的问题,但我的案例场景不同 我有一个这样结构的数组:Javascript 如何在js中生成以下内容的组合,javascript,arrays,Javascript,Arrays,我看到了与此类似的问题,但我的案例场景不同 我有一个这样结构的数组: var options = { 'color': ['red', 'green'], 'size': ['L', 'XS'], 'dimensions': ['dim1'] }; 我想在下面的结构中生成组合 { 'red,L,dim1': [ {'color': 'red'}, {'size': 'L'}, {'dimensions': 'dim1'}, ], 'red,XS,dim1': [
var options = {
'color': ['red', 'green'],
'size': ['L', 'XS'],
'dimensions': ['dim1']
};
我想在下面的结构中生成组合
{
'red,L,dim1': [
{'color': 'red'},
{'size': 'L'},
{'dimensions': 'dim1'},
],
'red,XS,dim1': [
{'color': 'red'},
{'size': 'XS'},
{'dimensions': 'dim1'},
],
'green,L,dim1': [
{'color': 'green'},
{'size': 'L'},
{'dimensions': 'dim1'},
],
'green,XS,dim1': [
{'color': 'green'},
{'size': 'XS'},
{'dimensions': 'dim1'},
],
};
我怎样才能做到这一点?
我很感激任何帮助好的,所以花了一段时间后我就明白了
options = ['color', 'size'];
optionsValues= [['Red','Blue'], ['L', 'XS']];
function combination() {
var r = [], arg = arguments[0], max = arg.length-1;
function helper(arr, i) {
for (var j=0, l=arg[i].length; j<l; j++) {
var a = arr.slice(0); // clone arr
var obj = {};
obj[options[i]] = arg[i][j];
a.push(obj);
if (i==max){
str = '';
for(var c = a.length - 1 ; c >= 0; c--){
if(c == 0){
str += a[c][options[c]];
}else{
str += a[c][options[c]] + ',';
}
}
r[str] = a;
}
else
helper(a, i+1);
}
}
helper([], 0);
return r;
}
console.log(combination(optionsValues));
options=['color','size'];
选项值=['Red','Blue'],['L','XS'];
函数组合(){
var r=[],arg=arguments[0],max=arg.length-1;
功能助手(arr,i){
对于(var j=0,l=arg[i]。长度;j=0;c--){
如果(c==0){
str+=a[c][options[c]];
}否则{
str+=a[c][options[c]+',';
}
}
r[str]=a;
}
其他的
助手(a,i+1);
}
}
助手([],0);
返回r;
}
console.log(组合(选项值));
请告诉我们,到目前为止,您编写了哪些代码来解决您的问题,以及您从何处受到影响?一个简单的方法是循环颜色数组,然后嵌套在此循环中,遍历大小数组,然后嵌套在该数组中,遍历维度数组。在最内部的循环中,您可以访问所有值(颜色、大小、尺寸),然后您可以将这些值连接到一个键,并将其添加到循环之前定义的新对象中。但实际上,您应该尝试一些东西,并向我们展示您在问题中的方法。