如何在Javascript中合并数组?

时间:2016-08-10 08:40:29

标签: javascript arrays object

我已按照以下方式构建了我的数组。

var myArray = [];
for(var i = 0; i < data.length; i++)
{
    var product = data[i][0];
    var size = data[i][1];
    myArray.push({product:product, value:size})
}

如何构建data超出了范围。当我遍历myArray时,我在console.log中得到以下结果。

for(var i = 0; i < myArray.length; i++)
{
    var product = myArray[i].product;
    var size = myArray[i].value;
    console.log(product + ' => ' + size);
}

Shoe A => S
Shoe A => M
Shoe B => XS
Shoe B => S
Shoe B => M
Shoe C => M
Shoe C => LG
Shoe D => S
Shoe D => M
Shoe D => LG
Shoe D => XL

如何获得以下结果?

Shoe A => [S, M]
Shoe B => [XS, S, M]
Shoe C => [M, LG]
Shoe D => [S, M, LG, XL]

我倾向于使用AJAX将myArray发布到PHP处理程序。

4 个答案:

答案 0 :(得分:2)

要在单循环中获得所需的输出:

  

鞋A =&gt; [S,M]

     

鞋B =&gt; [XS,S,M]

     

鞋C =&gt; [M,LG]

     

鞋D =&gt; [S,M,LG,XL]

您可以尝试此解决方案。使用哈希而不是数组。

var myArray = {};

for(var i = 0; i < data.length; i++)
{
    var product = data[i][0];
    var size = data[i][1];
    if(myArray[product] === undefined) {
       myArray[product] = []
    }
    myArray[product].push(size)
}

答案 1 :(得分:0)

您应该可以使用Array.reduce()将每个值添加到新的Object

[
  {product:'shoe a', value:'L'},
  {product:'shoe b', value:'M'},
  {product:'shoe b', value:'S'}

].reduce(function(memo, item) {
  var arr = memo[item.product] || [];
  arr.push(item.value);
  memo[item.product] = arr;
  return memo
}, {})

答案 2 :(得分:0)

我认为你想建立一个这样的结构:

var oData = {
  A : [Some Sizes],
  B : [Some Sizes] ...
}

其中A和B是您的产品。因此,当您遍历初始数据时,您需要:

var sSize = "size you want to add";
    if(oData[A] === undefined){
       oData.A = [sSize];
    }else{
       oData[A].push(sSize);
    }

答案 3 :(得分:0)

你的输出数组列表应该有这样的对象{name:“productName”,size:[{“productSize”}]

看一下例子,aaa是输出数组

    var aaa = [];
        var names = [];

      for(var i = 0; i < myArray.length; i++)
        {
                if(names.indexOf(myArray[i].product)>-1){
                        for(var j=0; j< aaa.length; j++){
                            if(aaa[j].name == myArray[i].product){
                               aaa[j].size.push(myArray[i].value)
                             }
                     }
            }
            else{
                var ppp = {};
                ppp.name = "";
                ppp.size = [];
                ppp.name =  myArray[i].product;
                ppp.size.push(myArray[i].value);
                names.push(ppp.name);
                aaa.push(ppp);
            }
        }

        for(var i=0; i<aaa.length; i++ ){
        console.log(aaa[i]);
        }