将一个数组复制到另一个数组

时间:2012-08-15 11:04:11

标签: javascript jquery

我是以下格式的数组。我正在阅读来自文件data.json的数据

$.getJSON('data/data.json', function (ids) {
            for (var i = 0; i < ids.length; i++) {
                var id = ids[i];
                teams = id;
                $('<li>' + id + '</li>').appendTo(span);

            }
        });

这是数据

[
"109 200",
"109 201",
"102 202",
"103 202"
]

所以我想要的是将这个数组复制到另一个让我们说c但是以下面的形式

[
"109",
"109",
"102",
"103",
"200",
"201",
"202",
"202"
]

如何使用javascript或jquery执行此操作?

3 个答案:

答案 0 :(得分:4)

迭代结果集,拆分每个元素按空格,添加生成的两个数字到两个不同的数组,每个数组代表一个减半,最后,连接左侧部分和右侧部分:

var left = [], 
    right = [];
for (var i = 0; i < ids.length; i++) {
  var pair = ids[i].split(" ");
  left.push(pair[0]);
  right.push(pair[1]);
}
var result = left.concat(right);

答案 1 :(得分:3)

只需使用

ids.join(' ').split(' ');

修改 这将尊重订单。

$.map(ids,function(i){ return i.split(' ')[0]; }).concat($.map(ids,function(i){ return i.split(' ')[1]; }))

答案 2 :(得分:1)

虽然João有正确的方法来执行此操作,但我注意到您希望将这些元素添加到数组的顺序。为了得到你所说的你所追求的,试试这个:

$.getJSON('data/data.json', function (ids) {
    var leftArray = new Array();
    var rightArray = new Array();

    for (var i = 0; i < ids.length; i++) {
        var splitted = ids[i].split(" ");

        if (splitted[0] !== null) {
            leftArray.push(splitted[0]);
        }

        if (splitted[1] !== null) {
            rightArray.push(splitted[1]);
        }
    }

    // now join the two arrays together to get your order
    var joinedArray = leftArray.conact(rightArray);

    // now build your elements with the data
    for (var i = 0; i < joinedArray.length; i++) {
        $('<li>' + joinedArray[i] + '</li>').appendTo(span);
    }
});