需求: 将
var priceOption = {
age:[18,20],
sex:['男','女'],
hc:['2-6人','7-8人']
}
上述对象中age与sex及hc自由组合:得到如下形式:
{age: 18, sex: "男", hc: "2-6人"}
{age: 18, sex: "男", hc: "7-8人"}
{age: 18, sex: "女", hc: "2-6人"}
{age: 18, sex: "女", hc: "7-8人"}
{age: 20, sex: "男", hc: "2-6人"}
{age: 20, sex: "男", hc: "7-8人"}
{age: 20, sex: "女", hc: "2-6人"}
{age: 20, sex: "女", hc: "7-8人"}
代码如下
var priceFactor=['age','sex','hc']
var priceOption = {
age:[18,20],
sex:['男','女'],
hc:['2-6人','7-8人']
}
function plzhFirst(datas){
var array = [];
var propObj = getFirstProp(datas);
var propName= propObj.name;
var propValue=propObj.value;
if(_.isArray(propValue)){
for(var i = 0 ;i<propValue.length;i++){
var newObj = {};
newObj[propName]=propValue[i];
array.push(newObj);
}
}else{
var newObj ={};
newObj[propName]=propValue;
array.push(newObj)
}
for(var i=1;i<priceFactor.length;i++){
array = plzh(array,priceOption[priceFactor[i]],priceFactor[i])
}
return array
}
function getFirstProp(obj){
var propObj = {}
for(var i in obj){
propObj.name=i;
propObj.value=obj[i];
return propObj;
}
}
function plzh(arr1,arr2,nextAttr){
var array = [];
for(var i=0;i<arr1.length;i++)
{
var obj = arr1[i];
for(var j=0;j<arr2.length;j++)
{
var newObj= _.cloneDeep(obj);
var v2 = arr2[j];
newObj[nextAttr]=v2;
array.push(newObj);
};
};
return array;
}
var endData =console.log(plzhFirst(priceOption));
网友评论