将数组合并为一个

时间:2013-12-31 01:41:46

标签: javascript jquery performance

我正在使用“推送”

创建一个数组

所以结果是[Object,Object]

在那里代码看起来像:

[Object, Object]
    0: Object
        type: Array[6]
    1: Object
       type: Array[4]

我想将两个对象组合起来并获得如下结果:

["Mike", "Matt", "Nancy", "Adam", "Jenny", "Carl", "Jim", "Issac", "Lee", "Won"] 

我不知道这个有用吗,有什么建议吗?

代码示例:

    dropdown: function(data) {
        var arr = [];

        $.each(data, function(key, value) {
            arr.push({
                type: value.type
            });
        });
    }

4 个答案:

答案 0 :(得分:4)

您可以使用concat将一个数组连接到另一个数组。

arr = arr.concat(otherArr);

请注意concat创建一个新数组,原始数据保持不变,这就是您必须重新分配它的原因。

注意 - 对于三个数组,您可以继续传入它们。

var arr1 = [0,1];
var arr2 = [2,3];
var arr3 = [4,5];

arr1 = arr1.concat(arr2, arr3);

console.log(arr1);

Fiddle


修改

你提到过拥有动态数组。我不确定你是什么意思,但我会注意到,如果你有一个任意数组的数组,并且你想要它们全部合并,你可以这样做

var arr1 = [0,1];
var arr2 = [2,3];
var arr3 = [4,5];

var otherArrays = [arr2, arr3];

arr1 = Array.prototype.concat.apply(arr1, otherArrays);

console.log(arr1);

FIDDLE

答案 1 :(得分:1)

使用concat,就像这样

arr1=["apple","orange","pineapple","pomegranate"];
arr2=["pizza","candy","chocolate","tasty"];
arr3=["food","drink"];
concatted=arr1.concat(arr2).concat(arr3);

您可以根据需要继续将这样的数组链接在一起,直到内存不足

或者,你可以这样做

concatted=arr1.concat(arr2,arr3);

如果要删除重复项,可以使用此

Array.prototype.removeDuplicates=function(){
    var newArray=[];
    for(var i=0;i<this.length;i++){
        if(newArray.indexOf(this[i])==-1){
            newArray.push(this[i]);
        }
    }
    return newArray;
}

答案 2 :(得分:0)

由于您指定可以使用jquery,请查看merge()函数:http://api.jquery.com/jquery.merge/

答案 3 :(得分:0)

一个简单的循环:

var result = [];
for (var i = 0; i < objects.length; i++) {
    $.merge(result, object[i].type);
}