2

我是以下格式的数组。我正在从这样的文件中读取以下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 执行此操作?

4

3 回答 3

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);
于 2012-08-15T11:06:41.343 回答
3

只需使用

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

编辑 这将尊重订单。

$.map(ids,function(i){ return i.split(' ')[0]; }).concat($.map(ids,function(i){ return i.split(' ')[1]; }))
于 2012-08-15T11:10:55.497 回答
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);
    }
});
于 2012-08-15T11:15:50.083 回答