美文网首页
对象数组组合

对象数组组合

作者: 爱忽悠的唐唐在晃悠 | 来源:发表于2018-05-10 17:04 被阅读9次

需求: 将
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));
 

相关文章

  • 数组去重,数据合并,数组合并去重等ES6语法

    数组去重 数组合并 数组合并去重 淘宝首页到底用了多少种标签(面试题) 对象合并 数组合并替换

  • 对象引用

    concat方法拷贝原数组 对象引用(非对象直接量):concat方法会复制对象引用放到组合的新数组里,原数组和新...

  • 对象数组组合

    需求: 将var priceOption = {age:[18,20],sex:['男','女'],hc:['2-...

  • 合并两个相同的数组

    遇到一个问题,需要把两个相同的数组合并成一个数组, 数组对象yuanMultipleSelection 数组对象s...

  • JS之向对象数组添加属性并赋值

    两个对象数组合并属性与值 输出结果为: 两个对象数组合去重并合并 输出结果为: [来源]https://www.c...

  • 数据格式转换

    map过滤数组中对象 间隔字符插入 判断数组中对象某个属性的值是否都相等 二维数组合并为一维数组

  • ES6 函数

    Object.entries 对象遍历 将对象中每个属性转为一个数组 Array.filter过滤器 数组合并Ar...

  • mysql中json_merge的使用

    json_merge顾名思义就是将多个json对象和Json数组合并。 原数据如下 json数组和json数组的合...

  • es6常用数组操作

    1:数组对象中取出某属性值组合成新的纯数组 使用map let obj=[{id:"1",name:"11"}, ...

  • js 两个数组合并成数组对象

    实现功能:两个数组合并成数组对象 1.两个普通的数组,但是要数组长度相同,想要数组A和数组B的下标对应 2.想要得...

网友评论

      本文标题:对象数组组合

      本文链接:https://www.haomeiwen.com/subject/kihtdftx.html