使用push()将两个数组合并为一个

时间:2016-06-17 11:43:42

标签: javascript jquery object push

我有以下代码:

<ac:structured-macro ac:name="html"><ac:plain-text-body><![CDATA[<iframe src="http://YOURDOMAIN/path_to_file" noborder="0" width="830" height="800" scrolling="yes" seamless></iframe>]]></ac:plain-text-body></ac:structured-macro>

我希望得到以下结果:

list1的:

  
      
  • 0:对象(苏黎世)
  •   
  • 1:对象(伦敦)
  •   
  • 3:对象(纽约)
  •   
  • 4:对象(虚拟)
  •   
  • 5:对象(Dummy2)
  •   

但我得到了这个:

list1的:

  • 0:对象(苏黎世)
  • 1:对象(伦敦)
  • 2:对象(纽约)
  • 3:对象(项目)
    • 0:对象(虚拟)
    • 1:对象(Dummy2)

如何获得我的expectet结果?

谢谢和欢呼。

6 个答案:

答案 0 :(得分:8)

Array#concat旁边,您可以使用Array#push.apply

&#13;
&#13;
var list1 = { Items: [{ ID: 1, Name: "Zurich" }, { ID: 2, Name: "London" }, { ID: 3, Name: "New York" }] },
    list2 = { Items: [{ ID: -1, Name: "Dummy" }, { ID: 0, Name: "Dummy2" }] };

[].push.apply(list1.Items, list2.Items);

console.log(list1);
&#13;
&#13;
&#13;

答案 1 :(得分:4)

问题是如何使用push()而不是concat():

for (var i = 0; i < list2.Items.length; i++) {
    list1.Items.push(list2.Items[i]);
}

答案 2 :(得分:2)

&#13;
&#13;
list1 = {
    Items: [
        {
            ID: 1,
            Name: "Zurich"
        },
        {
            ID: 2,
            Name: "London"
        },            {
            ID: 3,
            Name: "New York"
        }
    ]
};

list2 = {
    Items: [
        {
            ID: -1,
            Name: "Dummy"
        },
        {
            ID: 0,
            Name: "Dummy2"
        }
    ]
};

list1.Items = list1.Items.concat(list2.Items);
console.log(list1);
&#13;
&#13;
&#13;

答案 3 :(得分:1)

尝试:

list2.items.forEach(function (item) {
  list1.items.push(item)
})

答案 4 :(得分:1)

使用spread operator

list1.Items.push(...list2.Items)

Spread是ES2015的一项功能。您的目标浏览器或运行时可能尚不支持它,因此请检查compatibility table(或使用babel等转录程序。)

答案 5 :(得分:0)

您需要遍历items中的每个list2,然后抓取它们以推送到list1。以下是使用$.each的代码段

var list1 = {
    Items: [
        {
            ID: 1,
            Name: "Zurich"
        },
        {
            ID: 2,
            Name: "London"
        },            {
            ID: 3,
            Name: "New York"
        }
    ]
};

var list2 = {
    Items: [
        {
            ID: -1,
            Name: "Dummy"
        },
        {
            ID: 0,
            Name: "Dummy2"
        }
    ]
};

$(list2.Items).each(function(k,v){
  list1.Items.push(v);
  
})
console.log(list1);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>