关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

C#数组交叉

发布时间:2019-12-05 18:18:05

    var field = ['color', 'size', 'type', 'type2', 'season'];

    var arr = [

        {name: '颜色', value: ['red', 'green']},

        {name: '尺码', value: ['L', 'M', 'XL']},

        {name: '类型', value: ['男款', '女款', '人妖款']},

        {name: '类型2', value: ['上衣', '裤子', '帽子', '袜子']},

        {name: '季节', value: ['春', '夏', '秋', '冬']},

    ];

    arr = arr.map(({value: v}, i) => v.map(t => Object({[field[i]]: t})));

    var result = arr

        .reduce((a, b) =>

            a.reduce((c, d) =>

                c.concat(b.map(e => Object.assign({}, d, e))), []));

    console.log(result);

 console.time('start');

  var field = ['color', 'size', 'type', 'type2', 'season'];

  var arr = [

    { name: '颜色', value: ['red', 'green'] },

    { name: '尺码', value: ['L', 'M', 'XL'] },

    { name: '类型', value: ['男款', '女款', '人妖款'] },

    { name: '类型2', value: ['上衣', '裤子', '帽子', '袜子'] },

    { name: '季节', value: ['春', '夏', '秋', '冬'] },

  ];

  function overlapping(a, b) {

    if (a.length === 0) {

      return b;

    }

    if (b.length === 0) {

      return a;

    }

    let newArr = [];

    a.forEach(v => {

      b.forEach(w => {

        newArr.push(v + '|' + w)

      })

    })

    return newArr

  }

  const result = arr.reduce((v, w) => overlapping(v, w.value), []).map(v => {

    let _v = v.split('|');

    let obj = {};

    field.map((x, i) => obj[x] = _v[i])

    return obj;

  })

  console.log(result);

  console.timeEnd('start');



/template/Home/Zkeys/PC/Static