我是以下格式的数组。我正在阅读来自文件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执行此操作?
答案 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);
}
});