Javascript 在对象内组合数组元素 trialObject:{ “颜色”:[“红色”、“蓝色”], 'size':['s','m'], “材料”:[“棉花”] } //用于进行组合的递归函数 makeObjectVariants(选定){ 让键=对象。键(选定) if(Object.keys(selected).length==1){ 返回所选[键[0]]; }否则{ var结果=[]; var currentArray=selected[键[0]] 删除所选[键[0]] var restObjects=this.makeObjectVariants(选中)//再次调用函数 对于(var i=0;i

Javascript 在对象内组合数组元素 trialObject:{ “颜色”:[“红色”、“蓝色”], 'size':['s','m'], “材料”:[“棉花”] } //用于进行组合的递归函数 makeObjectVariants(选定){ 让键=对象。键(选定) if(Object.keys(selected).length==1){ 返回所选[键[0]]; }否则{ var结果=[]; var currentArray=selected[键[0]] 删除所选[键[0]] var restObjects=this.makeObjectVariants(选中)//再次调用函数 对于(var i=0;i,javascript,arrays,algorithm,object,recursion,Javascript,Arrays,Algorithm,Object,Recursion,我希望输出包含键值对,以便可以识别数组元素属于哪个组 我在向生成的元素添加关键点时遇到问题,因为我无法跟踪对象关键点。如果可以使用ES6(默认参数、排列运算符、箭头函数等),则以下代码可以完成此工作: var-trialObject={ 颜色:[“红色”、“蓝色”], 大小:['s','m'], 材料:[“棉质”] }; var结果=构建组合(trialObject); 控制台日志(结果); 函数构建组合(trialObject,keys=Object.keys(trialObject),ke

我希望输出包含键值对,以便可以识别数组元素属于哪个组

我在向生成的元素添加关键点时遇到问题,因为我无法跟踪对象关键点。如果可以使用ES6(默认参数、排列运算符、箭头函数等),则以下代码可以完成此工作:

var-trialObject={
颜色:[“红色”、“蓝色”],
大小:['s','m'],
材料:[“棉质”]
};
var结果=构建组合(trialObject);
控制台日志(结果);
函数构建组合(trialObject,keys=Object.keys(trialObject),keyIndex=0,subbj={},res=[])){
trialObject[keys[keyIndex]].forEach(元素=>{
子对象[keys[keyIndex]]=元素;
keys[keyIndex+1]?构建组合(trialObject,keys,keyIndex+1,subbj,res):res.push({…subbj});
});
返回res;
}
trialObject : {
        'color': ['red','blue'],
        'size': ['s','m'],
        'material': ['cotton']
      }

// RECURSION FUNCTION TO MAKE COMBINATIONS

makeObjectVariants(selected){

      let key = Object.keys(selected)
      if(Object.keys(selected).length === 1){
        return selected[key[0]];
      } else {
        var result = [];
        var currentArray  = selected[key[0]]
        delete selected[key[0]] 
        var restObjects = this.makeObjectVariants(selected) // call function again

        for(var i = 0; i < restObjects.length; i++){
          for (var j = 0; j < currentArray.length; j++) {
            result.push([restObjects[i] +','+ currentArray[j]]);
          }
        }
        return result; // resultant array
      }
    }

// OUTPUT 
0:["cotton,s,red"]
1:["cotton,s,blue"]
2:["cotton,m,red"]
3:["cotton,m,blue"]

// EXPECTED OUTPUT 
[{'material':cotton,'size':s,'color':red},...]