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

結果セットを反復処理し、各要素を空白で分割し、結果の 2 つの数値を 2 つの異なる配列に追加します。それぞれが半分を表し、最後に 左部分と右部分を連結します。

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 に答える